Pagini recente » Cod sursa (job #2820063) | Cod sursa (job #2465379) | Cod sursa (job #2044275) | Cod sursa (job #3176995) | Cod sursa (job #1103983)
#include <fstream>
using namespace std;
ifstream g1("maxflow.in");
ofstream g2("maxflow.in");
int c[1001][1001],f[1001][1001],t[1001],n,m,s,d,v[1001],flux;
int BF(int s, int d)
{
int p,u,x,i;
for(i=1;i<=n;i++) t[i]=0;
p=u=1;v[p]=s;t[s]=-1;
while(p<=u)
{
x=v[p];
for(i=1;i<=n;i++)
{
if(!t[i]&&c[x][i]>f[x][i])
{
v[++u]=i;
t[i]=x;
if(i==d) return 1;
}
}
p++;
}
return 0;
}
void ford_fulkerson()
{
int i,x;
while(BF(s,d))
{
x=10000;
i=d;
while(i!=s)
{
if(c[t[i]][i]-f[t[i]][i]<x) x=c[t[i]][i]-f[t[i]][i];
i=t[i];
}
i=d;
while(i!=s)
{
f[t[i]][i]+=x;
f[i][t[i]]-=x;
i=t[i];
}
flux+=x;
}
}
int main()
{
int x,y,z,i,j;
g1>>n>>m>>s>>d;
for(i=1;i<=m;i++)
{
g1>>x>>y>>z;
c[x][y]=z;
}
ford_fulkerson();
g2<<flux<<'\n';
//for(i=1;i<=n;i++){for(j=1;j<=n;j++) g2<<f[i][j]<<" "; g2<<'\n';}
return 0;
}