hdu1532网络流
来源:互联网 发布:网络推手阿建排第一 编辑:程序博客网 时间:2024/05/22 08:01
Drainage Ditches
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 12550 Accepted Submission(s): 5975
Problem Description
Every time it rains on Farmer John's fields, a pond forms over Bessie's favorite clover patch. This means that the clover is covered by water for awhile and takes quite a long time to regrow. Thus, Farmer John has built a set of drainage ditches so that Bessie's clover patch is never covered in water. Instead, the water is drained to a nearby stream. Being an ace engineer, Farmer John has also installed regulators at the beginning of each ditch, so he can control at what rate water flows into that ditch.
Farmer John knows not only how many gallons of water each ditch can transport per minute but also the exact layout of the ditches, which feed out of the pond and into each other and stream in a potentially complex network.
Given all this information, determine the maximum rate at which water can be transported out of the pond and into the stream. For any given ditch, water flows in only one direction, but there might be a way that water can flow in a circle.
Farmer John knows not only how many gallons of water each ditch can transport per minute but also the exact layout of the ditches, which feed out of the pond and into each other and stream in a potentially complex network.
Given all this information, determine the maximum rate at which water can be transported out of the pond and into the stream. For any given ditch, water flows in only one direction, but there might be a way that water can flow in a circle.
Input
The input includes several cases. For each case, the first line contains two space-separated integers, N (0 <= N <= 200) and M (2 <= M <= 200). N is the number of ditches that Farmer John has dug. M is the number of intersections points for those ditches. Intersection 1 is the pond. Intersection point M is the stream. Each of the following N lines contains three integers, Si, Ei, and Ci. Si and Ei (1 <= Si, Ei <= M) designate the intersections between which this ditch flows. Water will flow through this ditch from Si to Ei. Ci (0 <= Ci <= 10,000,000) is the maximum rate at which water will flow through the ditch.
Output
For each case, output a single integer, the maximum rate at which water may emptied from the pond.
Sample Input
5 41 2 401 4 202 4 202 3 303 4 10
Sample Output
50#include<cstdio>#include<cstring>#include<queue>#include<cmath>using namespace std;const int Ni = 210;const int MAX = 1<<26;struct Edge{ int u,v,c; int next;} edge[20*Ni];int n,m;int edn;//边数int p[Ni];//父亲int d[Ni];int sp,tp;//原点,汇点void addedge(int u,int v,int c){ edge[edn].u=u; edge[edn].v=v; edge[edn].c=c; edge[edn].next=p[u]; p[u]=edn++; edge[edn].u=v; edge[edn].v=u; edge[edn].c=0; edge[edn].next=p[v]; p[v]=edn++;}int bfs(){ queue <int> q; memset(d,-1,sizeof(d)); d[sp]=0; q.push(sp); while(!q.empty()) { int cur=q.front(); q.pop(); for(int i=p[cur]; i!=-1; i=edge[i].next) { int u=edge[i].v; if(d[u]==-1 && edge[i].c>0) { d[u]=d[cur]+1; q.push(u); } } } return d[tp] != -1;}int dfs(int a,int b){ int r=0; if(a==tp)return b; for(int i=p[a]; i!=-1 && r<b; i=edge[i].next) { int u=edge[i].v; if(edge[i].c>0 && d[u]==d[a]+1) { int x=min(edge[i].c,b-r); x=dfs(u,x); r+=x; edge[i].c-=x; edge[i^1].c+=x; } } if(!r)d[a]=-2; return r;}int dinic(int sp,int tp){ int total=0,t; while(bfs()) { while(t=dfs(sp,MAX)) total+=t; } return total;}int main(){ int i,u,v,c; while(~scanf("%d%d",&m,&n)) { edn=0;//初始化 memset(p,-1,sizeof(p)); sp=1; tp=n; for(i=0; i<m; i++) { scanf("%d%d%d",&u,&v,&c); addedge(u,v,c); } printf("%d\n",dinic(sp,tp)); } return 0;}
0 0
- hdu1532 网络流
- hdu1532网络流
- hdu1532网络流(DINIC)
- 最大网络流--hdu1532
- HDU1532 - Drainage Ditches(网络流)
- HDU1532 Drainage Ditches(网络流模板)
- Drainage Ditches(HDU1532,网络流)
- HDU1532 Drainage Ditches 网络流模板
- HDU1532 Drainage Ditches(网络流EdmondsKarp)
- HDU1532 Drainage Ditches(网络流、EdmondsKarp)
- EK算法网络流模板hdu1532
- hdu1532-网络流水题,网络流模板题
- hdu1532 网络流裸题
- HDU1532 - Drainage Ditches 网络流之最大流
- HDU1532 Drainage Ditches (网络流基础水题)
- 增广路算法(网络流) HDU1532 Drainage Ditches
- hdu1532——Drainage Ditches(网络流模板)
- HDU1532——Drainage Ditches(网络流Dinic算法)
- HDU 1034.Candy Sharing Game【又是模拟】【8月22】
- 抽象工厂
- 习惯性的对自己没信心,其实没想到自己已经变强大了。
- TCP的发送系列 — 发送缓存的管理(一)
- bash变量-位置参数与预定义变量
- hdu1532网络流
- sturt1 submit 提交在后台回去不到表单的值,是否加了disabled="true "属性?
- 策略(strategy)模式
- Matlab之视角旋转函数
- POJ3104--Drying
- 苹果游戏TWS's MixMaster已在App Store上架,欢迎大家捧场
- Sublime Text Package Control
- 32位64位编译器各类型数据所占字节
- 黑马程序员--Java基础学习(面向对象)第十天