Pagini recente » Cod sursa (job #2692765) | Cod sursa (job #1630913) | Cod sursa (job #2697368) | Cod sursa (job #1613094) | Cod sursa (job #371525)
Cod sursa(job #371525)
using namespace std;
#include <cstdio>
#define MAX 1005
#define INFINIT 1<<30
int cap[MAX][MAX], n, tata[MAX], flux_maxim;
void read(){
freopen("maxflow.in","r",stdin);
int m,i,j,c;
scanf("%d%d",&n,&m);
for(; m ; --m){
scanf("%d%d%d",&i,&j,&c);
cap[i][j]=c;
}
}
int bfs(int sursa, int dest){
for(int i=1; i<=n;i++)
tata[i] = -1;
int coada[MAX], st=1,dr=1;
coada[dr] = sursa;
tata[sursa] = 0;
int k , i,gata=0;
while(st<=dr && !gata){
k = coada[st++];
for(i = 1; i<=n;i++)
if(tata[i]==-1 && cap[k][i]){
coada[++dr] = i, tata[i] = k;
if(i==dest)
gata=1;;
}
}
return gata;
}
int main(){
read();
while(bfs(1,n)){
int v , k , min=INFINIT;
v=n;
while(k=tata[v]){
if(cap[k][v] < min)
min = cap[k][v];
v=k;
}
v= n;
while(k = tata[v]){
cap[k][v] -= min;
cap[v][k] += min;
v=k;
}
flux_maxim += min;
}
freopen("maxflow.out","w", stdout);
printf("%d", flux_maxim);
return 0;
}