Cod sursa(job #661719)

Utilizator mening12001Andrei Geogescu mening12001 Data 14 ianuarie 2012 23:23:10
Problema Flux maxim Scor 60
Compilator cpp Status done
Runda Arhiva educationala Marime 0.7 kb
#include<iostream>
#include<fstream>
using namespace std;
int viz[1000],a[1000][1000],n,p[1000],ok=0;
int parcurg(int x)
{viz[x]=1;
for(int i=1;i<=n;i++)
if(viz[i]==0&&a[x][i]>0&&ok==0)
{p[i]=x;
if(i==n)
ok=1;
else
parcurg(i);}


}




int main()
{ifstream f("maxflow.in");
ofstream h("maxflow.out");
int m,x,y,c,i,min=123231,s=0;
f>>n>>m;
for(int i=1;i<=m;i++)
{f>>x>>y>>c;
a[x][y]=c;}
while(1!=0)
{min=123231;
for(int z=1;z<=n;z++)
{p[z]=0;
viz[z]=0;}
ok=0;
parcurg(1);
if(p[n]==0)
break;

i=n;
while(p[i]!=0)
{if(a[p[i]][i]<min)
min=a[p[i]][i];
i=p[i];}
s=s+min;
i=n;
while(p[i]!=0)
{a[p[i]][i]=a[p[i]][i]-min;
a[i][p[i]]=a[i][p[i]]+min;
i=p[i];}}
h<<s;
return 0;}