Ctrl K

Расстояния до кольцевой

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

Кольцо — перекрёстки 0, 1, 2. Перекрёсток 3 в одном шаге от 2, перекрёсток 4 — в двух, перекрёсток 5 — в одном шаге от 1.

Пример 2
count=4, roads=[[3, 0], [0, 1], [1, 2], [2, 3]] → [0, 0, 0, 0]

Все дороги образуют одно кольцо, поэтому каждый перекрёсток уже на нём.

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

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