Pagini recente » Cod sursa (job #3262566) | Cod sursa (job #2428337) | Cod sursa (job #27921) | Cod sursa (job #3003464) | Cod sursa (job #410630)
Cod sursa(job #410630)
#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++){
t[i]=0;
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;
}
li++;
}
if(t[n])return 1;
return 0;
}
int main()
{
int i,x,y,fm=0,min;
ifstream fin("maxflow.in");
ofstream fout("maxflow.out");
fin>>n>>m;
for(i=1;i<=m;i++)fin>>x>>y>>c[x][y];
while(bfs()){
min=c[t[n]][n]-f[t[n]][n];
i=t[n];
while(t[i]){
if(c[t[i]][i]-f[t[i]][i]<min)min=c[t[i]][i]-f[t[i]][i];
i=t[i];
}
i=n;
while(t[i]){
f[t[i]][i]=f[t[i]][i]+min;
i=t[i];
}
fm=fm+min;
}
fout<<fm;
return 0;
}