| 101 | } |
| 102 | |
| 103 | long long flow() { |
| 104 | long long f = 0; |
| 105 | while (true) { |
| 106 | fill(level.begin(), level.end(), -1); |
| 107 | level[s] = 0; |
| 108 | q.push(s); |
| 109 | if (!bfs()) |
| 110 | break; |
| 111 | fill(ptr.begin(), ptr.end(), 0); |
| 112 | while (long long pushed = dfs(s, flow_inf)) { |
| 113 | f += pushed; |
| 114 | } |
| 115 | } |
| 116 | return f; |
| 117 | } |
| 118 | }; |
| 119 | int main() |
| 120 | { |