Pagini recente » Cod sursa (job #1841478) | Cod sursa (job #2199243) | Cod sursa (job #2195138) | Cod sursa (job #452422) | Cod sursa (job #1624214)
#include <iostream>
#include <fstream>
#include <vector>
#include <queue>
#define NMAX 1001
#define oo 0x3f3f3f3f
using namespace std;
int n,m,F[NMAX][NMAX],C[NMAX][NMAX],flux,x,y,r;
int T[NMAX],q[NMAX];
ifstream f("maxflow.in");
ofstream g("maxflow.out");
int BF(int s,int d)
{
int i,k,p,u;
p=u=0;
for(i=1;i<=n;i++)
T[i]=0;
q[0]=s;
T[s]=-1;
for(;p<=u;p++)
{
k=q[p];
for(i=1;i<=n;i++)
if(!T[i]&&C[k][i]>F[k][i])
{
q[++u]=i;
T[i]=k;
if(i==d)return 1;
}
}
return 0;
}
int main()
{
f>>n>>m;
for(int i=1;i<=m;i++)
{
f>>x>>y;
f>>C[x][y];
}
int i;
for(;BF(1,n);flux+=r)
{
r=oo;
for(i=n;i!=1;i=T[i])
r=min(r,C[T[i]][i]-F[T[i]][i]);
for(i=n;i!=1;i=T[i])
F[T[i]][i]+=r,F[i][T[i]]-=r;
}
g<<flux;
return 0;
}