poj 1459 最大流(EK实现)

Problem is from:http://poj.org/problem?id=1459

Edmond Karp最大流

 1 #include<cstdio>
 2 #include<cstring>
 3 #include<queue>
 4 #include<iostream>
 5 #include<algorithm>
 6 using namespace std;
 7 #define MAXN 110
 8 int n,map[MAXN][MAXN],pre[MAXN];
 9 bool flag[MAXN];
10 
11 //BFS()寻找增广路
12 bool BFS(int start,int end){
13     queue<int> que;
14     int k;
15     memset(pre,-1,sizeof(pre));
16     memset(flag,true,sizeof(flag));
17     que.push(start);
18     flag[start]=false;
19     while(!que.empty()){
20         k=que.front();
21         if(k==end)
22             return true;
23         que.pop();
24         for(int i=0;i<n;i++){
25             if(map[k][i] && flag[i]){
26                 flag[i]=false;
27                 pre[i]=k;
28                 que.push(i);
29             }
30         }
31     }
32     return false;
33 }
34 
35 //MaxFlow()返回最大流
36 int MaxFlow(int start,int end){
37     int ans=0,k,minf;
38     while(BFS(start,end)){
39         minf=-1;
40         k=end;
41         while(pre[k]!=-1){
42             if(minf<0)
43                 minf=map[pre[k]][k];
44             else
45                 minf=min(minf,map[pre[k]][k]);
46             k=pre[k];
47         }
48         ans+=minf;
49         k=end;
50         while(pre[k]!=-1){
51             map[pre[k]][k]-=minf;
52             map[k][pre[k]]-=minf;
53             k=pre[k];
54         }
55     }
56     return ans;
57 }
58 
59 int main()
60 {
61     int np,nc,m,u,v,z,start,end;
62     while(scanf("%d%d%d%d",&n,&np,&nc,&m)!=EOF){
63         memset(map,0,sizeof(map));
64         start=n;end=n+1;
65         for(int i=0;i<m;i++){
66             scanf(" (%d,%d)%d",&u,&v,&z);
67             map[u][v]=z;
68         }
69         for(int i=0;i<np;i++){
70             scanf(" (%d)%d",&v,&z);
71             map[start][v]=z;
72         }
73         for(int i=0;i<nc;i++){
74             scanf(" (%d)%d",&u,&z);
75             map[u][end]=z;
76         }
77         n+=2;
78         printf("%d\n",MaxFlow(start,end));
79     }
80     return 0;
81 }
View Code

直接套模版...

原文地址:https://www.cnblogs.com/cshhr/p/3418291.html