20 constexpr uint64_t None = std::numeric_limits<uint64_t>::max();
21 std::vector<uint64_t> f(n, None);
25 auto augment = [&](
auto& self, uint64_t
const u) ->
bool {
26 for (uint64_t
const v : available) {
28 available.set(v,
false);
30 if (f[v] == None || self(self, f[v])) {
40 for (uint64_t u = 0; u < n; ++u) {
42 if (!augment(augment, u)) {