Pagini recente » Cod sursa (job #2559051) | Cod sursa (job #2633493) | Cod sursa (job #579527) | Cod sursa (job #2327380) | Cod sursa (job #275127)
Cod sursa(job #275127)
#include<stdio.h>
#include <string.h>
long p,u,s[1001],i,n,parinte[1001],c[1001][1001],m,x,y,z,fluxm,min;
int bf()
{ p=1; u=1; s[p]=1;
while(p<=u)
{for(i=1;i<=n;i++) if(!parinte[i]&&c[s[p]][i]&&i!=1) { u++; s[u]=i; parinte[i]=s[p]; }
p++;
}
if(parinte[n])return 1;else return 0;
}
int main()
{ freopen("maxflow.in","r",stdin); freopen("maxflow.out","w",stdout);
scanf("%ld%ld",&n,&m);
for(i=1;i<=m;i++)
{ scanf("%ld%ld%ld",&x,&y,&z);
c[x][y]=z;
}
while(bf())
{ min=111000; x=n;
while(parinte[x])
{ if(c[parinte[x]][x]<min) min=c[parinte[x]][x];
x=parinte[x];
}
x=n;fluxm+=min;
while(parinte[x])
{ c[parinte[x]][x]-=min;
c[x][parinte[x]]+=min;
x=parinte[x];
}
memset(parinte,0,sizeof(parinte));
}
printf("%ld",fluxm);
fclose(stdout);
return 0;
}