Ctrl K

Прогулка до первого повтора

Сложная
В городе n остановок с номерами от 0 до n - 1. С каждой остановки ведёт ровно один маршрут: с остановки i можно уехать только на остановку next_stop[i] (и это всегда другая остановка). Путешественник начинает на остановке x и едет по маршрутам, пока не окажется на остановке, где в этой поездке уже побывал. Тогда он останавливается. Верните массив answer, где answer[i] — число разных остановок, которые посетит путешественник, начав с остановки i.
Пример 1
next_stop=[1, 0] → [2, 2]

Из 0 идём в 1 и снова попадаем в 0 — посещены 2 разные остановки. Из 1 так же.

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

Из 0: 0 → 2 → 3 → 1 → 2 (уже была), посещены 4 остановки. Остановки 1, 2, 3 образуют кольцо из трёх, поэтому для них ответ 3.

Пример 3
next_stop=[1, 2, 1, 2] → [3, 2, 2, 3]
Ограничения
  • 2 ≤ n ≤ 10⁵, n = len(next_stop)
  • 0 ≤ next_stop[i] ≤ n − 1
  • next_stop[i] ≠ i
Встречал эту задачу на настоящем собесе?
Решили0
Пробовали0
Отправок0
Принято—
Темы
Похожие задачиСамый длинный подъём по карте СложнаяВор и охранник СложнаяМышь, кот и сыр СложнаяСамый частый цвет на пути СложнаяПрогулки только в гору Сложная
загружаем Python…
Вход
next_stop=[1, 0]
Ожидается
[2, 2]

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