Ctrl K

Переезды между офисами

Сложная
В компании offices офисов с номерами от 0 до offices - 1, и все они заполнены до отказа. Сотрудники подали заявки на переезд: moves[i] = [from, to] — кто-то хочет переехать из офиса from в офис to. Набор одобренных заявок допустим, только если в каждый офис въезжает ровно столько людей, сколько из него выезжает. Заявка, где from = to, ничего не меняет. Верните наибольшее число заявок, которые можно одобрить одновременно.
Пример 1
offices=3, moves=[[0, 1], [1, 2], [2, 0], [1, 0]] → 3

Переезды 0 → 1, 1 → 2, 2 → 0 образуют круг, и все офисы остаются полными. Добавить ещё и 1 → 0 нельзя: в офис 0 въедут двое, а выедет один.

Пример 2
offices=2, moves=[[0, 0], [0, 1]] → 1

Переезд внутри одного офиса ничего не меняет, его можно одобрить. Переезд 0 → 1 одобрить нельзя: обратного нет.

Пример 3
offices=4, moves=[[0, 1], [2, 3]] → 0
Ограничения
  • 1 ≤ offices ≤ 20
  • 1 ≤ len(moves) ≤ 16
  • len(moves[i]) = 2
  • 0 ≤ from, to < offices
Встречал эту задачу на настоящем собесе?
Решили0
Пробовали0
Отправок0
Принято—
Темы
Похожие задачиСколько свидетелей могут быть честными СложнаяXOR каждого подмножества ЛёгкаяНаборы с полным OR СредняяПерестрелять соперника СредняяСтолбцы, закрывающие строки Средняя
загружаем Python…
Вход
offices=3, moves=[[0, 1], [1, 2], [2, 0], [1, 0]]
Ожидается
3

«Запустить» — первые 3 теста у тебя в браузере, «Отправить» — все 56 тестов на сервере, включая скрытые.