Pagini recente » Cod sursa (job #2568371) | Cod sursa (job #2657807) | Cod sursa (job #75165) | Cod sursa (job #2440593) | Cod sursa (job #2974295)
#include <fstream>
#include <vector>
#include <map>
#define NMAX 1005
#define INF 1e9
using namespace std;
ifstream fin("maxflow.in");
ofstream fout("maxflow.out");
int n, m;
int x, y, z;
vector<int> l[NMAX];
map<pair<int, int>, int> cap;
bool f[NMAX];
int ans;
int i, j;
int dfs(int, int);
int main()
{
fin >>n>>m;
for (i = 1; i <= m; ++i)
{
fin >>x>>y>>z;
l[x].push_back(y); cap[{x, y}] = z;
if (!cap[{y, x}]) l[y].push_back(x);
}
x = 1;
while (x)
{
for (i = 1; i <= n; ++i) f[i] = 0;
x = dfs(1, INF);
ans += x;
}
fout <<ans<<'\n';
fout.close();
return 0;
}
int dfs(int vf, int minim)
{
f[vf] = 1;
if (vf == n) return minim;
for (int vfnou: l[vf])
if (!f[vfnou] && cap[{vf, vfnou}])
{
x = dfs(vfnou, min(minim, cap[{vf, vfnou}]));
if (x)
{
cap[{vf, vfnou}] -= x;
cap[{vfnou, vf}] += x;
return x;
}
}
return 0;
}