Pagini recente » Cod sursa (job #139277) | Cod sursa (job #265114)
Cod sursa(job #265114)
#include <stdio.h>
#define Nmax 1024
int t[Nmax],n,m,viz[Nmax],coada[Nmax],flux,C[Nmax][Nmax],F[Nmax][Nmax];
int bf()
{
int st,dr,nod,i;
for(i=1;i<=n;++i)
viz[i]=0;
st=1;dr=1;
coada[1]=1;
while(st<=dr)
{
nod=coada[st++];
for(i=1;i<=n;++i)
if(C[nod][i]-F[nod][i]>0 && viz[i]==0)
{
viz[i]=1;
t[i]=nod;
coada[++dr]=i;
}
}
return(viz[n]);
}
int main()
{
int x,y,c,min,i;
freopen("maxflow.in","r",stdin);
freopen("maxflow.out","w",stdout);
scanf("%d%d",&n,&m);
for(i=1;i<=m;++i)
{
scanf("%d%d%d",&x,&y,&c);
C[x][y]=c;
}
while(bf())
{
min=C[t[n]][n]-F[t[n]][n];
for(i=n;i!=1;i=t[i])
if(C[t[i]][i]-F[t[i]][i]<min)
min=C[t[i]][i]-F[t[i]][i];
for(i=n;i!=1;i=t[i])
{
F[t[i]][i]+=min;
F[i][t[i]]-=min;
}
flux+=min;
}
printf("%d\n",flux);
return 0;
}