Pagini recente » Cod sursa (job #648105) | Cod sursa (job #768393) | Cod sursa (job #431222) | Cod sursa (job #3135358) | Cod sursa (job #765470)
Cod sursa(job #765470)
#include<cstdio>
#define N 1001
int n,m,w[N],g[N][N],f[N][N],d[N],e[N][N],b[N],c[N],p,q,t,i,j,k,l;
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,&k),g[i][++w[i]]=j,e[i][j]=k;
while(1)
{for(k=1;k<=n;k++)
b[k]=0;
d[1]=N*N,p=q=0,c[q++]=1;
while(p<q&&!b[n])
{t=c[p++];
for(i=1;i<=w[t];i++)
if(!b[g[t][i]]&&(j=e[t][g[t][i]]-f[t][g[t][i]]))
b[c[q++]=g[t][i]]=t,d[g[t][i]]=d[t]<j?d[t]:j;}
if(!b[n])
break;
for(l=n;l!=1;l=b[l])
{f[b[l]][l]+=d[n],g[b[l]][++w[b[l]]]=l;
g[l][++w[l]]=b[l],f[l][b[l]]-=d[n];}}
for(j=0,i=1;i<=n;i++)
j+=f[1][i];
printf("%d",j);
return 0;}