Cod sursa(job #1472441)

Utilizator BlaugranasEnal Gemaledin Blaugranas Data 17 august 2015 07:01:49
Problema Flux maxim Scor 0
Compilator c Status done
Runda Arhiva educationala Marime 0.84 kb
#include<stdio.h>
int i,j,n,m,y,l,k,w[1001],g[1001][1001],e[1001][1001],b[1001],c[5000];
int main() {
	freopen("maxflow.in","r",stdin),freopen("maxflow.out","w",stdout),scanf("%d%d",&n,&m);
	while(m--)
    	scanf("%d%d%d",&i,&j,&l),g[i][w[i]++]=j,g[j][w[j]++]=i,e[i][j]+=l;
	while(1) {
		for(j=1;j<=n;j++)
            b[j]=0;
       	for(l=1000001,j=c[0]=c[1]=1;j<=c[0]&&!b[n];j++)
        for(k=c[j],i=0;i<w[k];i++)
        if(!b[g[k][i]]&&e[k][g[k][i]])
            b[c[++c[0]]=g[k][i]]=k;
       	if(!b[n])
            break;
        for(j=0;j<w[n];j++) {
            k=g[n][i];
            if(!e[k][n]||!b[k])
                continue;
            for(j=n;j>1;j=b[j])
                l=l<e[b[j]][j]?e[b[j]][j]:l;
            for(y+=l,j=n;j>1;j=b[j])
                e[b[j]][j]-=l,e[j][b[j]]+=l;
        }
	}
	printf("%d",y);
}