Pagini recente » Cod sursa (job #1913318) | Cod sursa (job #1021606) | Cod sursa (job #2479413) | Cod sursa (job #1154519) | Cod sursa (job #2738708)
#include <bits/stdc++.h>
#define Nmax 1005
using namespace std;
ifstream fin ("maxflow.in");
ofstream fout ("maxflow.out");
vector <int> v[Nmax];
int n, m, t[Nmax], c[Nmax][Nmax], flux;
bool flow()
{
memset(t, 0, sizeof(t));
queue <int> q;
t[1]=-1;
q.push(1);
while(!q.empty())
{
int u=q.front();
q.pop();
for(auto it:v[u])
if(!t[it] && c[u][it])
{
t[it]=u;
q.push(it);
}
}
if(!t[n])
return 0;
for(auto it:v[n])
if(t[it] && c[it][n])
{
t[n]=it;
int fm=INT_MAX;
for(int i=n;i!=1;i=t[i])
fm=min(fm, c[t[i]][i]);
for(int i=n;i!=1;i=t[i])
{
c[t[i]][i]-=fm;
c[i][t[i]]+=fm;
}
flux+=fm;
}
return 1;
}
int main()
{
fin >> n >> m;
for(int i=1;i<=m;i++)
{
int x, y;
fin >> x >> y;
fin >> c[x][y];
v[x].push_back(y);
v[y].push_back(x);
}
while( flow() );
fout << flux;
return 0;
}