Pagini recente » Cod sursa (job #1776169) | Cod sursa (job #1177128) | Cod sursa (job #180550) | Cod sursa (job #417767) | Cod sursa (job #1295051)
#include <stdio.h>
using namespace std;
int n,m,i,k,C[1001][1001],F[1001][1001],flow,c[1000000],t[1001],x,y;
bool BFS()
{
int i,p,u,x;
p=u=1;
c[p]=1;
for (i=1;i<=n;i++) t[i]=0;
while (p<=u)
{
x=c[p++];
for (i=1;i<=n;i++)
if (!t[i]&&F[x][i]<C[x][i])
{
c[++u]=i;
t[i]=x;
if (i==n) return 1;
}
}
return 0;
}
void flux(int s)
{
int m,i;
for (flow=0;BFS();flow+=m)
{
m=600000000;
for (i=n;t[i];i=t[i])
if (C[t[i]][i]-F[t[i]][i]<m) m=C[t[i]][i]-F[t[i]][i];
for (i=n;t[i];i=t[i])
{
F[t[i]][i]+=m;
//F[i][t[i]]-=m;
}
}
}
int main()
{
freopen ("maxflow.in","r",stdin);
freopen ("maxflow.out","w",stdout);
scanf("%i%i",&n,&m);
for (i=1;i<=m;i++)
{
scanf("%i%i%i",&x,&y,&k);
C[x][y]=k;
}
flux(1);
printf("%i",flow);
return 0;
}