uva820(最大流)
来源:互联网 发布:lic授权软件破解 编辑:程序博客网 时间:2024/06/05 06:38
#include <iostream>#include <cstdio>#include <cstring>#include <vector>#include <queue>using namespace std;const int maxn = 10000 + 5;const int INF = 1e8;struct Edge{ int from,to,cap,flow; Edge(int u,int v,int c,int f):from(u),to(v),cap(c),flow(f) {}};struct EdmondsKarp{ int n,m; vector<Edge> edges;//边数的两倍 vector<int> G[maxn]; int a[maxn];//当起点到i的可改进量 int p[maxn]; //最短路上p的入弧编号 void init(int n){ for(int i=0;i<n;i++) G[i].clear(); edges.clear(); } void AddEdge(int from,int to,int cap){ edges.push_back(Edge(from,to,cap,0)); edges.push_back(Edge(to,from,cap,0));//反向弧 m = edges.size(); G[from].push_back(m-2); G[to].push_back(m-1);//G[i][j]表示节点i的第j条边在e数组的序号 } int Maxflow(int s,int t){ int flow=0; for(;;){ memset(a,0,sizeof(a)); queue<int> Q; Q.push(s); a[s]=INF; while(!Q.empty()){ int x=Q.front(); Q.pop(); for(int i=0;i<G[x].size();i++){ Edge& e=edges[ G[x][i] ]; //以下松弛操作 if(!a[e.to]&&e.cap>e.flow){ p[e.to] = G[x][i];//p数组相当于记录了 e.to的入弧,卧槽是不是很啰嗦,但是我自己理解了 a[e.to] = min(a[x],e.cap-e.flow);//找到这一条路上残量最小值 Q.push(e.to); } } if(a[t]) break; } if(!a[t]) break; for(int u=t;u!=s;u=edges[p[u] ].from){ edges[p[u] ].flow += a[t]; edges[p[u]^1 ].flow -= a[t]; } flow += a[t]; } return flow; }};int main(){//freopen("in.txt", "r", stdin);int kase = 0;int n;while(~scanf("%d", &n) && n) {EdmondsKarp ek;ek.init(n * 4 + 10);int s, t, m;scanf("%d%d%d", &s, &t, &m);int u, v, cap;for(int i = 0; i < m; i++) {scanf("%d%d%d", &u, &v, &cap);ek.AddEdge(u, v, cap);}printf("Network %d\n", ++kase);printf("The bandwidth is %d.\n\n", ek.Maxflow(s, t));} return 0;}
0 0
- uva820(最大流)
- uva820 最大流模板题
- [最大流]UVa820 - Internet Bandwidth
- 【最大流问题 dinic算法】Internet Bandwidth, ACM/ICPC World Finals 2000, UVa820
- Uva820 Internet Bandwidth(网络流、双向EdmondsKarp)
- [uva820] Internet Bandwidth
- 解题报告 之 UVA820 Internet Bandwidth
- poj 3422(最大费用最大流)
- hdu 4322(最大费用最大流)
- poj3469最大流(最大割)
- 最大流(转载)
- poj1273 (最大流)
- 最大流(EK)
- hdu1532(最大流)
- poj1273(最大流)
- poj1459(最大流)
- 最大流(一)
- 最大流(二)
- docker镜像仓库的安装(apphouse)
- vim编辑器内的操作
- 配置eclipse中本地约束文件
- Quartz——有状态的job和无状态的job
- PAT 乙级 1004. 成绩排名
- uva820(最大流)
- 使用MediaTracker加载并显示图像
- 逆波兰表达式
- QT数据库
- clock的创意
- 遇到大容量磁盘你该怎么办?
- Spring框架基础之注解
- Android中的 事件流----浅析安卓中的动与静(四) 进程间通讯
- onSaveInstanceState和onRestoreInstanceState触发的时机