Pagini recente » Cod sursa (job #321365) | Cod sursa (job #2762776) | Cod sursa (job #372838) | Cod sursa (job #2453282) | Cod sursa (job #661716)
Cod sursa(job #661716)
#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&&i!=n&&ok==0)
{p[i]=x;
parcurg(i);}
else
if(viz[i]==0&&a[x][i]>0&&i==n&&ok==0)
{p[i]==x;
ok=1;
break;}
}
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;}