\(\mathcal O\left(\dfrac{n^3}{\omega}\right)\)
(偷懒写法)
bitset<N> nvis, G[N];
bool match(int u) {
for (int i = (G[u] & nvis)._Find_first(); i != N; i = (G[u] & nvis)._Find_next(i))
if (!mat[i] || (nvis[i] = false, match(mat[i])))
return mat[i] = u, true;
return false;
}