标签:
北京好热啊,宿舍还没空调,都不能安安静静地敲代码了~>_<~今天老师讲网络流完全没听啊,晚上想了好久的网络流,感觉还是没有完全理解,过了一道模板题。
Time Limit: 1000MS | Memory Limit: 10000K | |
Total Submissions: 61994 | Accepted: 23794 |
Description
Input
Output
Sample Input
5 4 1 2 40 1 4 20 2 4 20 2 3 30 3 4 10
Sample Output
50
1 #include<iostream> 2 #include<cstdio> 3 #include<cstring> 4 #include<algorithm> 5 #include<queue> 6 using namespace std; 7 int map[300][300]; 8 int pre[300]; 9 bool vis[300]; 10 int n,m,s,t; 11 bool bfs() 12 { 13 int i,temp; 14 queue<int>q; 15 memset(pre,0,sizeof(pre)); 16 memset(vis,0,sizeof(vis)); 17 vis[s]=true; 18 q.push(s); 19 while(!q.empty()) 20 { 21 temp=q.front(); 22 q.pop(); 23 if(temp==t) return true; 24 for(i=1;i<=n;i++) 25 { 26 if(!vis[i]&&map[temp][i]) 27 { 28 q.push(i); 29 pre[i]=temp; 30 vis[i]=true; 31 } 32 } 33 } 34 return false; 35 } 36 int EK() 37 { 38 int i,ans=0; 39 while(1) 40 { 41 if(!bfs()) return ans; 42 int MIN=9999999; 43 for(i=t;i!=s;i=pre[i]) 44 MIN=min(MIN,map[pre[i]][i]); 45 for(i=t;i!=s;i=pre[i]) 46 { 47 map[pre[i]][i]-=MIN; 48 map[i][pre[i]]+=MIN; 49 } 50 ans+=MIN; 51 } 52 } 53 int main() 54 { 55 while(~scanf("%d%d",&m,&n)) 56 { 57 s=1,t=n; 58 memset(map,0,sizeof(map)); 59 for(int i=0;i<m;i++) 60 { 61 int a,b,c; 62 scanf("%d%d%d",&a,&b,&c); 63 map[a][b]+=c; 64 } 65 printf("%d\n",EK()); 66 } 67 return 0; 68 }
标签:
原文地址:http://www.cnblogs.com/zero-zz/p/4684435.html