Pagini recente » Cod sursa (job #2941299) | Cod sursa (job #1022035) | Cod sursa (job #1915801) | Statistici pintea paul catalin (seven_7mm) | Cod sursa (job #1624450)
#include <fstream>
#define NMAX 1001
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 i,k,p,u;
p=u=0;
for(i=1;i<=n;i++)
T[i]=0;
q[0]=1;
T[1]=-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==n)return 1;
}
}
return 0;
}
int main()
{
f>>n>>m;
int i,j;
for(i=1;i<=m;i++)
{
f>>x>>y;
f>>C[x][y];
}
while(BF())
for(i=1;i<=n;i++)
{
if(T[i]==-1||C[i][n]<=F[i][n])continue;
r=C[i][n]-F[i][n];
for(j=i;j!=1&&j;j=T[j])
r=min(r,C[T[j]][j]-F[T[j]][j]);
if(r==0)continue;
F[i][n]+=r;
F[n][i]-=r;
for(j=i;j!=1;j=T[j])
{
F[T[j]][j]+=r;
F[j][T[j]]-=r;
}
flux+=r;
}
g<<flux;
return 0;
}