Pagini recente » Cod sursa (job #1736342) | Cod sursa (job #1186774) | Cod sursa (job #298053) | Cod sursa (job #311547) | Cod sursa (job #410657)
Cod sursa(job #410657)
#include<fstream.h>
#include<iostream.h>
#define NMAX 1024
int n,m,c[NMAX][NMAX],f[NMAX][NMAX],q[NMAX],t[NMAX];
bool s[NMAX];
int bfs()
{
int i,li=1,ls=1;
for(i=1;i<=n;i++)s[i]=0;
q[1]=1;
s[1]=1;
while(li<=ls){
for(i=1;i<=n;i++)if(!s[i] && c[q[li]][i]-f[q[li]][i]>0){
q[++ls]=i;
t[i]=q[li];
s[i]=1;
if(i==n)return 1;
}
li++;
}
return 0;
}
int main()
{
int j,x,y,fm=0,min;
ifstream fin("maxflow.in");
ofstream fout("maxflow.out");
fin>>n>>m;
for(j=1;j<=m;j++){
fin>>x>>y;
fin>>c[x][y];
}
while(bfs()){
min=c[t[n]][n]-f[t[n]][n];
j=t[n];
while(t[j]){
if(c[t[j]][j]-f[t[j]][j]<min)min=c[t[j]][j]-f[t[j]][j];
j=t[j];
}
j=n;
while(t[j]){
f[t[j]][j]=f[t[j]][j]+min;
f[j][t[j]]=f[j][t[j]]-min;
j=t[j];
}
fm=fm+min;
}
fout<<fm;
return 0;
}