USACO 4.2 Drainage Ditches
2012-04-18 21:10
169 查看
这是一道网络流的模板题,只要知道网络流的基本概念应该就能水过,在此只贴代码,有空我会写一篇网络流入门的文章供还没有接触过网络流的朋友阅读。
代码:
代码:
#include<cstdio> #include<cstdlib> #include<queue> #define MAX 210 #define oo 10000001 using namespace std; int map[MAX][MAX],arcs,nodes,_max,layer[MAX]; bool table[MAX]; FILE *in,*out; void DFS(int *list,int index); void flow(void); bool BFS(); int main() { in=fopen("ditch.in","r"); out=fopen("ditch.out","w"); fscanf(in,"%d%d",&arcs,&nodes); for(int i=0;i<arcs;i++) { int a,b,c; fscanf(in,"%d%d%d",&a,&b,&c); map[a][b]+=c; } flow(); fprintf(out,"%d\n",_max); fclose(in); fclose(out); return 0; } void flow(void) { int path[MAX]; while(BFS()) { for(int i=1;i<=nodes;i++) table[i]=false; table[0]=true; path[0]=1; DFS(path,0); } } bool BFS() { queue <int> myqueue; for(int i=0;i<MAX;i++) layer[i]=MAX; myqueue.push(1); layer[1]=1; while(!myqueue.empty()) { int p=myqueue.front(); myqueue.pop(); for(int i=2;i<=nodes;i++) { if(map[p][i]>0 && layer[i]>layer[p]+1) { layer[i]=layer[p]+1; myqueue.push(i); } } } if(layer[nodes]<MAX) return true; else return false; } void DFS(int *list,int index) { int p=list[index]; if(p==nodes) { int min=oo; for(int i=1;i<=index;i++) { int a=list[i-1]; int b=list[i]; if(map[a][b]<min) min=map[a][b]; } _max+=min; for(int i=1;i<=index;i++) { int a=list[i-1]; int b=list[i]; map[a][b]-=min; map[b][a]+=min; } return ; } for(int i=2;i<=nodes;i++) { if(map[p][i]>0 && table[i]==false && layer[p]<layer[i]) { list[index+1]=i; table[i]=true; DFS(list,index+1); table[i]=false; } } }
相关文章推荐
- Drainage Ditches USACO 4.2 (最大流,BFS)
- 【CJOJ1167】【洛谷1894】[USACO4.2]完美的牛栏
- USACO Section 4.2 Drainage Ditches(最大流)
- COGS——T 886. [USACO 4.2] 完美的牛栏
- USACO-Section 4.2 Job Processing (贪心)
- usaco-4.2-stall4-passed
- 洛谷P2740 [USACO4.2]草地排水Drainage Ditches
- USACO The Perfect Stall 4.2(二分图最大匹配,匈牙利算法)
- USACO-Section 4.2 Drainage Ditches (最大流[Ford-Fulkerson])
- usaco4.2
- POJ1274 The Perfect Stall_洛谷P1894 [USACO4.2]完美的牛栏
- USACO 4.2 The Perfect Stall网络流解最大二分图匹配
- (洛谷P1894)USACO 4.2 The Perfect Stall 完美的牛栏
- (ssl1904)USACO 4.2 The Perfect Stall 完美的牛栏(最大匹配)
- USACO 4.2 Drainage Ditches 草地排水(预流推进)
- 洛谷P1894 [USACO4.2]完美的牛栏The Perfect Stall
- 网络流的初步应用[USACO4.2]草地排水
- 洛谷P1894 [USACO4.2]完美的牛栏The Perfect Stall
- USACO-Section 4.2 The Perfect Stall (二分图最大匹配[匈牙利算法[DFS]||网络流[Ford-Fulkerson]])
- 08-25 USACO 4.1~4.2 搜索,最大流,二分匹配