Pagini recente » Cod sursa (job #841327) | Cod sursa (job #841310) | Cod sursa (job #841359) | Cod sursa (job #729320) | Cod sursa (job #247301)
Cod sursa(job #247301)
#include<fstream.h>
#define max_n 1001
#define infinit 1<<30
ifstream fin("maxflow.in");
ofstream fout("maxflow.out");
int c[max_n][max_n],f[max_n][max_n],t[max_n],n,m,flux;
inline int min(int a,int b){ return (a<b ? a : b);}
int bf(int s,int d)
{
int li,ls,nod,q[max_n],i;
memset(t,0,sizeof(t));
for(li=1,ls=1,t[s]=-1,q[1]=s;li<=ls;li++)
{
nod=q[li];
for(i=1;i<=n;i++)
if(!t[i] && c[nod][i]>f[nod][i])
{
q[++ls]=i;
t[i]=nod;
if(i==d) return 1;
}
}
return 0;
}
int main()
{
int i,r,x,y,z;
fin>>n>>m;
for(i=1;i<=m;i++)
{
fin>>x>>y>>z;
c[x][y]=z;
}
for(flux=0;bf(1,n);flux+=r)
{
r=infinit;
i=n;
while(i!=1)
{
r=min(r,c[t[i]][i]-f[t[i]][i]);
i=t[i];
}
i=n;
while(i!=1)
{
f[t[i]][i]+=r;
f[i][t[i]]-=r;
i=t[i];
}
}
fout<<flux<<'\n';
fout.close();
return 0;
}