Pagini recente » Cod sursa (job #2979228) | Cod sursa (job #1933108) | Cod sursa (job #2944334) | Cod sursa (job #1043712) | Cod sursa (job #386888)
Cod sursa(job #386888)
#include<fstream>
using namespace std;
int n,fmax;
int c[1005][1005];
int coada[1005];
int t[1005];
int st,dr,k,i;
int bfs()
{
st=dr=1;
coada[st]=1;
for(i=1;i<=n;i++)
t[i]=-1;
t[1]=0;
while(st<=dr)
{
k=coada[st];
for(i=1;i<=n;i++)
if(c[k][i]&&t[i]==-1)
{
coada[++dr]=i;
t[i]=k;
if(i==n)
return 1;
}
st++;
}
return 0;
}
int main()
{
int m,x,y,z,cmin;
FILE *fin=fopen("maxflow.in","r");
fscanf(fin,"%d%d",&n,&m);
for(;m>0;m--)
{
fscanf(fin,"%d%d%d",&x,&y,&z);
c[x][y]=z;
}
while(bfs())
{
cmin=1<<30;
for(i=n;t[i]!=0;i=t[i])
if(c[t[i]][i]<cmin)
cmin=c[t[i]][i];
for(i=n;t[i]!=0;i=t[i])
{
c[t[i]][i]-=cmin;
c[i][t[i]]+=cmin;
}
fmax+=cmin;
}
FILE *fout=fopen("maxflow.out","w");
fprintf(fout,"%d",fmax);
return 0;
}