Ctrl K

Лишний кабель

Средняя
В офисе n компьютеров с номерами от 1 до n. Сначала их соединили кабелями так, что между любыми двумя был ровно один путь — получилось дерево. Потом кто-то протянул ещё один кабель между двумя компьютерами, которые раньше не были соединены напрямую. Список cables длины n содержит все кабели: cables[i] = [a, b] соединяет компьютеры a и b. Верните кабель, после удаления которого сеть снова станет деревом из всех n компьютеров. Если подходит несколько, верните тот, что стоит в списке последним. Кабель возвращайте в том виде, в каком он записан в cables.
Пример 1
cables=[[2, 3], [1, 2], [3, 4], [1, 3]] → [1, 3]

Кольцо образуют кабели [2, 3], [1, 2] и [1, 3]. Убрать можно любой из них, но из этих трёх позже всех в списке идёт [1, 3].

Пример 2
cables=[[3, 1], [2, 4], [1, 4], [3, 4], [4, 5]] → [3, 4]

Кольцо 3 – 1 – 4 – 3. Последний из его кабелей в списке — [3, 4]. Кабель [4, 5] убирать нельзя: компьютер 5 отвалится.

Пример 3
cables=[[1, 2], [2, 3], [3, 4], [4, 5], [5, 6], [6, 1]] → [6, 1]
Ограничения
  • n == len(cables)
  • 3 ≤ n ≤ 10⁴
  • 1 ≤ a, b ≤ n, a ≠ b
  • Между двумя компьютерами не больше одного кабеля
  • Все компьютеры связаны в одну сеть
Встречал эту задачу на настоящем собесе?
Решили0
Пробовали0
Отправок0
Принято—
Темы
Похожие задачиСкладываются ли связи в дерево СредняяСколько изолированных групп в сети СредняяЦепочки отношений СредняяГруппы связанных серверов СредняяРазбить на две команды Средняя
загружаем Python…
Вход
cables=[[2, 3], [1, 2], [3, 4], [1, 3]]
Ожидается
[1, 3]

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