Lang:G++
Edit12345678910111213141516171819202122232425262728293031#include <iostream>#include <vector>#include <algorithm>#include <string>#include <limits.h>using namespace std;struct Edge {int to;int cap;int idx;Edge(int _to, int _cap, int _idx): to(_to), cap(_cap), idx(_idx) {}};vector<vector<Edge> > g;vector<bool> vis;int N, M;int s, t;void addEdge(int u, int v) {g[u].push_back(Edge(v, 1, g[v].size()));g[v].push_back(Edge(u, 0, g[u].size()-1));}int dfs(int u, int mc = INT_MAX) {vis[u] = true;if (u == t) return mc;for (int i = 0; i < g[u].size(); ++i) {Edge& e = g[u][i];if (!vis[e.to] && e.cap > 0) {int f = dfs(e.to, min(mc, e.cap));