| 1 | #include "hopcroft_karp.cpp" |
| 2 | vector<bool> alt; |
| 3 | void dfs(bipartite_graph &g, int at) { |
| 4 | alt[at] = true; |
| 5 | iter(it,g.adj[at]) { |
| 6 | alt[*it + g.N] = true; |
| 7 | if (g.R[*it] != -1 && !alt[g.R[*it]]) dfs(g, g.R[*it]); } } |
| 8 | vi mvc_bipartite(bipartite_graph &g) { |
| 9 | vi res; g.maximum_matching(); |
| 10 | alt.assign(g.N + g.M,false); |