/** * Return maxflow from ini to end */ int maxflow(int ini, int end) { flow = vi(SZ(dest)); int F = 0; while (MFbfs(ini, end)) while (true) { int tmp = MFdfs(ini, end, INF); F += tmp; if (tmp == 0) break; } return F; }
int maxflow(int ini, int end) { if (_ini != ini || _end != end) { flow = vi(sz(dest)); _ini = ini; _end = end; } while (MFbfs(ini, end)) while (MFdfs(ini, end, INF)); int F = 0; for (int a : adj[ini]) F += flow[a]; return F; }