Pagini recente » Cod sursa (job #1865751) | Cod sursa (job #213063) | Cod sursa (job #926263) | Cod sursa (job #935295) | Cod sursa (job #320180)
Cod sursa(job #320180)
#include<stdio.h>
int c[1001][1001],n,m;
int main()
{
FILE *fin,*fout;
int i,j,a,b,v[1001],p[1001],s[1001],k,gasit,min;
fin=fopen("maxflow.in","rt");
fout=fopen("maxflow.out","wt");
fscanf(fin,"%i %i",&n,&m);
for(i=1;i<=m;i++)
{fscanf(fin,"%i %i %i",&a,&b,&k);
c[a][b]=k;
}
do
{k=1;
j=1;
v[1]=1;
p[1]=0;
gasit=0;
min=0;
for(i=1;i<=n;i++) s[i]=0;
s[1]=1;
while(j<=k && !gasit)
{for(i=1;i<=n;i++)
if(c[v[j]][i]>0 && !s[i])
{v[++k]=i;
p[k]=j;
s[i]=1;
if(i==n) gasit=1;
}
j++;
}
i=k;
while(p[i]!=0)
{if(min==0 || c[v[p[i]]][v[i]]<min) min=c[v[p[i]]][v[i]];
i=p[i];
}
i=k;
while(p[i]!=0)
{c[v[p[i]]][v[i]]-=min;
c[v[i]][v[p[i]]]+=min;
i=p[i];
}
}while(min!=0);
k=0;
for(i=1;i<=n;i++) k+=c[n][i];
fprintf(fout,"%i",k);
fclose(fin);
fclose(fout);
return 0;
}