#include #include #include в using namespace std; vector d; vector > g; vector > e; int n, t; bool bfs () { d.assign (n, -1); queue q; d[0] = 0; q.push (0); while (!q.empty ()) { int curVertex = q.front (); q.pop (); for (int i = 0; i < g[curVertex].size (); ++i) { int nextVertex = g[curVertex][i]; if (e[nextVertex].flow < e[nextVertex].capacity && d[e[nextVertex].to] == -1) { q.push (e[nextVertex].to); d[e[nextVertex].to] = d[curVertex] + 1; } } if (d[t] != -1) return 1; else return 0; } } int dfs (int curVertex, int flow) { if (v == t) return flow; if (!flow) return 0; for (; ptr[curVertex] < g[curVertex].size (); ++ptr[curVertex]) { int p = g[curVertex][ptr[curVertex]]; int to = e[p].to; if (d[to] == d[v] + 1) { int pushed = dfs (to, min (flow, e[p].cup - e[p].flow)); if (pushed) { e[p].flow += pushed; e[p^1].flow -= pushed; return pushed; } } } } int main () { return 0; }