POJ 1273 Drainage Ditches
2011-10-21 22:00
204 查看
额,又做了一遍哈,不过有一段时间没学最大流了,就当是复习复习挺好!
View Code
这个Edmonds_Karp看这就是舒服呵,不想Dinic那么复杂!
就是不断找增广路。。。直到没有增广路。。。结束!
需要注意的是,这里的亮点是:pre
这个数组,记录路线的数组,挺不错的!
View Code
#include <stdio.h> #include <string.h> #define N 202 int map ; int queue ; int pre ; int Edmonds_Karp(int start,int end,int n) { int i,cur,front,rear; int maxflow=0; while(true) { front=rear=0; queue[rear]=start; memset(pre,-1,sizeof(pre)); pre[start]=0; while(front<=rear) { cur=queue[front++]; for(i=1;i<=n;i++) { if(map[cur][i] && pre[i]==-1) queue[++rear]=i,pre[i]=cur; } if(pre[end]!=-1) break; } if(pre[end]==-1) break; int minflow=0x7fffffff; for(cur=end;cur!=start;cur=pre[cur]) { if(minflow>map[pre[cur]][cur]) minflow=map[pre[cur]][cur]; } maxflow+=minflow; for(cur=end;cur!=start;cur=pre[cur]) { map[pre[cur]][cur]-=minflow; map[cur][pre[cur]]+=minflow; } } return maxflow; } int main() { int n,m; int i,v,u,flow; //freopen("input.txt","r",stdin); while(scanf("%d %d",&n,&m)!=EOF) { memset(map,0,sizeof(map)); for(i=0;i<n;i++) { scanf("%d %d %d",&v,&u,&flow); map[v][u]=flow; } printf("%d\n",Edmonds_Karp(1,m,m)); } return 0; }
这个Edmonds_Karp看这就是舒服呵,不想Dinic那么复杂!
就是不断找增广路。。。直到没有增广路。。。结束!
需要注意的是,这里的亮点是:pre
这个数组,记录路线的数组,挺不错的!
相关文章推荐
- POJ1273 Drainage Ditches(最大流)
- POJ 1273 && HDU 1532 Drainage Ditches(最大流-Dinic)
- poj 1273
- POJ1273 Drainage Ditches
- poj_1273_Drainage Ditches
- POJ1273 Drainage Ditches(dinic)
- poj 1273 Dinic
- POJ 1273 —— Drainage Ditches 入门题
- poj(1273)(最大流)
- poj1273最大流初破
- poj 1273 Drainage Ditches
- POJ 1273 Drainage Ditches
- POJ 1273 最大流 Dinic
- poj 1273 Drainage Ditches -- (Dinic 算法入门)
- POJ 1273 Drainage Ditches -dinic
- POJ1273 Drainage Ditches【dinic算法】
- POJ 1273 Drainage Ditches
- poj 1273 Drainage Ditches
- poj 1273 最大流(Ford-Fulkerson算法和Dinic算法分别实现)
- 网络流之最大流 POJ 1273