Pagini recente » Cod sursa (job #2388296) | Cod sursa (job #710498) | Cod sursa (job #3205697) | Cod sursa (job #979404) | Cod sursa (job #386188)
Cod sursa(job #386188)
using namespace std;
#include <cstdio>
#define MAX 1005
#define INFINIT (1<<30)
int c[MAX][MAX], n, flux_maxim, t[MAX];
void write(){
freopen("maxflow.out","w",stdout);
printf("%d",flux_maxim);
}
void read(){
int m,i,j,k;
scanf("%d%d",&n,&m);
for( ; m ; --m){
scanf("%d%d%d",&i,&j,&k);
c[i][j]=k;
}
}
int bfs(int sursa,int destinatie){
int coada[MAX], st=1,dr=1, k,i;
for(i=1; i <= n ;i++)
t[i]=-1;
coada[1]=sursa;t[sursa]=0;
while(st<=dr){
k=coada[st++];
for(i=1;i<=n;i++)
if(t[i]==-1 && c[k][i]!=0){
t[i] = k, coada[++dr] = i;
if(i==destinatie)
return 1;
}
}
return 0;
}
void edmond_karp(){
int i, dcur;
while(bfs(1,n)){
dcur=INFINIT;
i=n;
while(t[i]){
if(c[t[i]][i]<dcur)
dcur= c[t[i]][i];
i=t[i];
}
i=n;
while(t[i]){
c[t[i]][i] -= dcur;
//c[i][t[i]] += dcur;
i=t[i];
}
flux_maxim +=dcur;
}
}
int main(){
freopen("maxflow.in","r",stdin);
read();
edmond_karp();
write();
return 0;
}