Ctrl K

Дружба при враждах

Сложная
В сообществе people человек с номерами от 0 до people - 1; изначально никто ни с кем не дружит. Список feuds содержит пары [x, y]: эти двое во вражде и не должны оказаться в одном кругу общения — ни напрямую, ни через цепочку друзей. Заявки в друзья requests[j] = [u, v] обрабатываются по порядку. Заявка принимается, если после неё ни одна враждующая пара не окажется связана цепочкой дружбы; тогда u и v становятся друзьями. Иначе заявка отклоняется и ничего не меняет. Если u и v уже в одном кругу, заявка просто принимается. Верните список из True/False — результат каждой заявки.
Пример 1
people=4, feuds=[[0, 3]], requests=[[0, 1], [2, 3], [1, 2], [1, 0]] → [True, True, False, True]

0 и 1 дружат, 2 и 3 дружат. Заявка 1–2 соединила бы 0 и 3 через общих друзей — отказ. Заявка 1–0: они уже друзья, принимается.

Пример 2
people=3, feuds=[], requests=[[0, 1], [1, 2]] → [True, True]

Вражды нет, все заявки принимаются.

Пример 3
people=5, feuds=[[1, 4], [0, 2]], requests=[[0, 4], [3, 1], [3, 4], [2, 3]] → [True, True, False, True]
Ограничения
  • 2 ≤ people ≤ 1000
  • 0 ≤ len(feuds) ≤ 1000
  • 1 ≤ len(requests) ≤ 1000
  • Каждая пара — два разных номера от 0 до people - 1
Встречал эту задачу на настоящем собесе?
Решили0
Пробовали0
Отправок0
Принято—
Темы
Похожие задачиЛишняя связь в дереве с корнем СложнаяПартнёры рядом СложнаяКого вылечить первым СложнаяКого отключить от сети СложнаяВода для всей деревни Сложная
загружаем Python…
Вход
people=4, feuds=[[0, 3]], requests=[[0, 1], [2, 3], [1, 2], [1, 0]]
Ожидается
[True, True, False, True]

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