Pagini recente » Cod sursa (job #679257) | Cod sursa (job #323690) | Cod sursa (job #2774505) | Cod sursa (job #3158523) | Cod sursa (job #3038195)
#include <stdio.h>
#include <stdlib.h>
#define N 1001
#define inf 1e9
#define min(x,y) (x<y?x:y)
short n , m , a , b , l , r , x;
int c;
short q[N] , t[N];
char viz[N];
int f[N][N];
char bfs(){
for(int i = 1 ; i <= n ; ++ i){
viz[i] = 0;
}
q[l = r = 1] = viz[1] = 1;
while(l <= r){
x = q[l++];
for(int i = 1 ; i <= n ; ++ i){
if(f[x][i] > 0 && !viz[i]){
viz[i] = 1;
t[i] = x;
q[++r] = i;
if(i == n)
return 1;
}
}
}
return 0;
}
int maxflow(){
int flow = 0;
while(bfs()){
int nf = inf , x = n;
while(t[x]){
nf = min(nf , f[t[x]][x]);
x = t[x];
}
flow += nf , x = n;
while(t[x]){
f[t[x]][x] -= nf;
f[x][t[x]] += nf;
x = t[x];
}
}
return flow;
}
int main(){
FILE *fin = fopen("maxflow.in" , "r");
FILE *fout = fopen("maxflow.out" , "w");
fscanf(fin , "%d%d" , &n , &m);
for(int i = 1 ; i <= m ; ++ i){
fscanf(fin , "%d%d%d" , &a , &b , &c);
f[a][b] = c;
}
fprintf(fout , "%d\n" , maxflow());
return 0;
}