Source Code Problem: 1273 User: zhouxc Memory: 552K Time: 0MS Language: G++ Result: Accepted Source Code #include "iostream" #include "queue" using namespace std; int m,n,a,b,c,cost[201][201]; int Pre[201],Min[201],M=10000001; bool visit[201]; int Bfs() { queue<int> q; int temp; visit[1]=true; Pre[1]=0; Min[1]=M; q.push(1); while(!q.empty()) { temp=q.front(); q.pop(); if(temp==m) break; for(int i=1;i<=m;i++) { if(!visit[i]&&cost[temp][i]) { Min[i]=(Min[temp]<cost[temp][i]) ? Min[temp] : cost[temp][i]; Pre[i]=temp; visit[i]=true; q.push(i); } } } if(!visit[m]) return -1; else return Min[m]; } void Ford_Fulkerson() { int f,Max_Flow=0; while((f=Bfs())!=-1) { int temp=m; Max_Flow+=f; memset(visit,false,sizeof(visit)); while(temp!=1) { int r=Pre[temp]; cost[r][temp]-=f; cost[temp][r]+=f; temp=r; } } printf("%d/n",Max_Flow); } int main() { while(scanf("%d%d",&n,&m)!=EOF) { memset(cost,0,sizeof(cost)); for(int i=1;i<=n;i++) { scanf("%d%d%d",&a,&b,&c); cost[a][b]+=c; } Ford_Fulkerson(); } return 0; }