Pagini recente » Cod sursa (job #3287052) | Cod sursa (job #1719174) | Cod sursa (job #3287314) | Cod sursa (job #3206057) | Cod sursa (job #882866)
Cod sursa(job #882866)
#include <stdio.h>
# include <string.h>
# include <algorithm>
using namespace std;
int n,m,c[1010][1010],f[1010][1010],r,t[1010],i,x,y,fl;
int BFS()
{
int p,u,nod,i,q[1000];
memset(t,0,sizeof(t));
p=u=1;
t[1]=-1;
q[1]=1;
while (p<=u)
{
nod=q[p];
for (i=1; i<=n; i++)
if (t[i]==0 && c[nod][i]>f[nod][i])
{
t[i]=nod;
q[++u]=i;
if (i==n) return 1;
}
p++;
}
return 0;
}
void flux()
{
int i; int r;
while (BFS())
{
r=100000;
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];
}
fl+=r;
}
}
int main()
{
freopen("maxflow.in","r",stdin);
freopen("maxflow.out","w",stdout);
scanf("%d %d\n",&n,&m);
for (i=1; i<=m; i++)
{
scanf("%d %d %d\n",&x,&y,&r);
c[x][y]=r;
}
fl=0;
flux();
printf("%d\n",fl);
return 0;
}