Ctrl K

Самое короткое кольцо в сети

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

Единственное кольцо 0 → 1 → 2 → 3 → 0 состоит из четырёх кабелей.

Пример 2
n=6, links=[[0, 1], [1, 2], [2, 3], [3, 4], [4, 0], [1, 5], [5, 3], [2, 5]] → 3

Есть кольца из пяти и четырёх кабелей, но самые короткие — треугольники, например 1 → 2 → 5 → 1.

Пример 3
n=4, links=[[0, 1], [1, 2], [1, 3]] → -1

Сеть — дерево, колец в ней нет.

Ограничения
  • 2 ≤ n ≤ 1000
  • 1 ≤ len(links) ≤ 1000
  • links[i] = [a, b], 0 ≤ a, b < n, a ≠ b
  • Между любыми двумя узлами не больше одного кабеля
Встречал эту задачу на настоящем собесе?
Решили0
Пробовали0
Отправок0
Принято—
Темы
Похожие задачиПорядок букв по словарю СложнаяСамый длинный подъём по карте СложнаяШарик и лунка СложнаяЛишняя связь в дереве с корнем СложнаяПартнёры рядом Сложная
загружаем Python…
Вход
n=5, links=[[0, 1], [1, 2], [2, 3], [3, 0], [1, 4]]
Ожидается
4

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