Pagini recente » Cod sursa (job #2965682) | Cod sursa (job #679876) | Cod sursa (job #2268322) | Cod sursa (job #2150067) | Cod sursa (job #2337081)
#include <bits/stdc++.h>
using namespace std;
int n,m,i,j,a,b,x,s;
int g[1001][1000],p[1002];
vector<int> t[1003];
ifstream fin("maxflow.in");
ofstream fout("maxflow.out");
bool bfs()
{
queue<int> q;
q.push(n);
p[n]=-1;
while (!q.empty())
{
a=q.front();
q.pop();
int nr=t[a].size();
for (i=0;i<nr;i++)
if (p[t[a][i]]==0 && g[a][t[a][i]])
{
p[t[a][i]]=a;
q.push(t[a][i]);
}
}
return (p[1]);
}
int main()
{
fin>>n>>m;
for (i=1;i<=m;i++)
{
fin>>a>>b>>x;
g[b][a]=x;
t[b].push_back(a);
}
while (bfs())
{
a=1;
x=1000000;
while (p[a]>0)
{
b=p[a];
x=min(x,g[b][a]);
a=b;
}
a=1;
while (p[a]>0)
{
b=p[a];
g[b][a]-=x;
g[a][b]+=x;
a=b;
}
for (int j=1;j<=n;j++) p[j]=0;
s+=x;
}
fout<<s;
return 0;
}