Ctrl K

Разбить на две команды

Средняя
В отделе n сотрудников с номерами от 0 до n - 1. Список conflicts[u] содержит номера тех, с кем сотрудник u не ладит. Конфликты взаимны: если v есть в conflicts[u], то и u есть в conflicts[v]. Никто не конфликтует сам с собой, повторов в списках нет. Нужно разделить всех сотрудников на две команды (одна из них может оказаться пустой) так, чтобы никакие двое конфликтующих не попали в одну команду. Верните True, если это возможно, и False иначе.
Пример 1
conflicts=[[1], [0, 2], [1, 3], [2]] → True

Цепочка 0 — 1 — 2 — 3: команды {0, 2} и {1, 3}.

Пример 2
conflicts=[[1, 2], [0, 2], [0, 1], []] → False

Сотрудники 0, 1 и 2 конфликтуют попарно: двоих из них придётся поставить в одну команду.

Пример 3
conflicts=[[], []] → True

Конфликтов нет — подходит любое разбиение.

Ограничения
  • 1 ≤ n = len(conflicts) ≤ 100
  • 0 ≤ conflicts[u][i] < n, conflicts[u][i] ≠ u
  • Значения в conflicts[u] различны
  • Если v есть в conflicts[u], то u есть в conflicts[v]
Встречал эту задачу на настоящем собесе?
Решили0
Пробовали0
Отправок0
Принято—
Темы
Похожие задачиСкладываются ли связи в дерево СредняяСколько изолированных групп в сети СредняяЦепочки отношений СредняяГруппы связанных серверов СредняяЛишний кабель Средняя
загружаем Python…
Вход
conflicts=[[1], [0, 2], [1, 3], [2]]
Ожидается
True

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