Pagini recente » Cod sursa (job #2192291) | Cod sursa (job #1625637) | Cod sursa (job #2090352) | Cod sursa (job #2719482) | Cod sursa (job #1917545)
#include <bits/stdc++.h>
#define pp pair<int,int>
#define x first
#define y second
using namespace std;
ifstream fin("maxflow.in");
ofstream fout("maxflow.out");
int i,j,n,m,p[1001],v[1001][1001],mini;
queue <int> q;
int go()
{
for(int i = 1; i <= n; i++)
p[i] = 0;
p[1] = 1;
q.push(1);
while(q.size())
{
int now = q.front();
q.pop();
for(int i = 1; i <= n; i++)
if(v[now][i] && p[i] == 0)
{
p[i] = now;
q.push(i);
}
}
return p[n];
}
int main()
{
fin >> n >> m;
for(i = 1; i <= m; i++)
{
int a,b,c;
fin >> a >> b >> c;
v[a][b] = c;
}
long long int flux = 0;
while(go())
{
for(int k = 1; k <= n; k++)
if(v[k][n] && p[k])
{
mini = v[k][n];
for(i = k; i != 1; i = p[i])
mini = min(mini, v[ p[i] ][i]);
for(i = k; i != 1; i = p[i])
{
v[ p[i] ][i] -= mini;
v[i][ p[i] ] += mini;
}
v[k][n] -= mini;
flux += mini;
}
}
fout<<flux;
return 0;
}