Pagini recente » Cod sursa (job #2132621) | Cod sursa (job #139472) | Cod sursa (job #563124) | Cod sursa (job #80681) | Cod sursa (job #3040616)
#include <fstream>
#include <map>
#include <climits>
#include <vector>
using namespace std;
ifstream cin ("maxflow.in");
ofstream cout ("maxflow.out");
map < pair<int,int>, int> r;
vector <int> g[1005];
bool viz[1005];
int n,m;
int dfs (int nod,int minim)
{
viz[nod] = true;
if (nod==n)
return minim;
for (auto vf:g[nod])
{
if (viz[vf])
continue;
if (!r[{nod,vf}])
continue;
int x = dfs(vf,min(minim,r[{nod,vf}]));
if (x > 0)
{
r[{nod,vf}] = r[{nod,vf}] - x;
r[{vf,nod}] = r[{vf,nod}] + x;
return x;
}
}
return 0;
}
int main()
{
ios::sync_with_stdio(false);
cin.tie(0);
cout.tie(0);
cin >> n >> m;
int i,j,k;
for (i=1;i<=m;i++)
{
int x,y,z;
cin >> x >> y >> z;
g[x].push_back(y);
r[{x,y}] = z;
if (r[{y,x}]==0)
g[y].push_back(x);
}
int x = 1;
int rasp = 0;
while (x)
{
for(i=1;i<=n;i++)
viz[i] = false;
x = dfs(1,INT_MAX);
rasp = rasp + x;
}
cout << rasp;
return 0;
}