Pagini recente » Cod sursa (job #1841779) | Cod sursa (job #1644762) | Cod sursa (job #1147551) | Cod sursa (job #1641424) | Cod sursa (job #276321)
Cod sursa(job #276321)
#include<stdio.h>
#include<string.h>
#define INF 2000000000
int n,m;
int t[1001],q[1001];
long c[1001][1001],f[1001][1001];
void read()
{
scanf("%d%d",&n,&m);
int i;
int x,y,z;
for (i=1;i<=m;i++)
{
scanf("%d%d%d",&x,&y,&z);
c[x][y]=z;
}
}
int lee(int s,int d)
{
int st,dr,i;
memset(t,0,sizeof(t));
st=dr=1;
q[st]=s;
t[st]=-1;
while (st<=dr)
{
for (i=1;i<=n;i++)
{
if (c[q[st]][i] && !t[i])
{
q[++dr]=i;
t[i]=q[st];
if (q[dr]==d)
return 1;
}
}
st++;
}
return 0;
}
void fluxmax()
{
int i;
long flux,min,p=n;
for (flux=0;lee(1,n);flux+=min)
{
min=INF;
p=n;
while (p!=1)
{
if (c[t[p]][p]<min)
min=c[t[p]][p];
p=t[p];
}
p=n;
while (p!=1)
{
f[t[p]][p]+=min;
c[t[p]][p]-=min;
p=t[p];
}
}
printf("%ld\n",flux);
}
int main()
{
freopen("maxflow.in","r",stdin);
freopen("maxflow.out","w",stdout);
read();
fluxmax();
return 0;
}