标签:
5 4 1 2 40 1 4 20 2 4 20 2 3 30 3 4 10
50
#include <iostream> #include<cstdio> #include<cstring> #include<queue> #include<algorithm> using namespace std; const int inf=0x7fffffff; int vis[202],pre[202],mp[202][202]; int i,n,m,sum; long long ans; int bfs() { int findpath=0; queue<int> Q; memset(vis,0,sizeof(vis)); memset(pre,0,sizeof(pre)); pre[1]=0; vis[1]=1; Q.push(1); while(!Q.empty()) { int u=Q.front(); Q.pop(); for(int i=1;i<=n;i++) if(mp[u][i]>0 && !vis[i]) { vis[i]=1; pre[i]=u; Q.push(i); if (i==n) {findpath=1; break;} } } if (!findpath) return 0; int maxflow=inf; int v=n; while(pre[v]>0) { maxflow=min(maxflow,mp[pre[v]][v]); v=pre[v]; } v=n; while(pre[v]>0) { mp[v][pre[v]]+=maxflow; mp[pre[v]][v]-=maxflow; v=pre[v]; } return maxflow; } int main() { while(~scanf("%d%d",&m,&n)) { memset(mp,0,sizeof(mp)); for(i=1;i<=m;i++) { int x,y,z; scanf("%d%d%d",&x,&y,&z); mp[x][y]+=z;//找了好久的错误,最后发现可能有好多条重复的,要累加 } ans=0; while(sum=bfs()) ans+=sum; printf("%d\n",ans); } return 0; }
HDU 1532 Drainage Ditches (最大网络流)
标签:
原文地址:http://www.cnblogs.com/stepping/p/5700571.html