Ctrl K

Все дороги ведут к цели

Средняя
В городе n перекрёстков, пронумерованных от 0 до n - 1, и односторонние дороги roads: пара [a, b] означает дорогу из a в b. Бывают петли (дорога из перекрёстка в него же) и несколько одинаковых дорог. Курьер выезжает с перекрёстка start и на каждом шаге едет по любой доступной дороге, пока не окажется на перекрёстке, откуда дорог нет. Верните True, если при любом его выборе: - он обязательно когда-нибудь остановится (нельзя кружить бесконечно); - остановится он только на перекрёстке goal. Иначе верните False. В частности, если из goal выходит хотя бы одна дорога, остановиться на нём нельзя.
Пример 1
n=4, roads=[[0, 1], [0, 2], [1, 3], [2, 3]], start=0, goal=3 → True

Из 0 можно уйти в 1 или 2, но оба пути сходятся в 3, а из 3 дорог нет.

Пример 2
n=3, roads=[[0, 1], [1, 0], [0, 2]], start=0, goal=2 → False

Можно бесконечно ездить по кругу 0 → 1 → 0, так что маршрутов бесконечно много.

Пример 3
n=3, roads=[[0, 1], [0, 2]], start=0, goal=2 → False

Поехав в 1, мы застреваем в тупике, который не является целью.

Ограничения
  • 1 ≤ n ≤ 10⁴
  • 0 ≤ len(roads) ≤ 10⁴
  • 0 ≤ a, b < n
  • 0 ≤ start, goal < n
Встречал эту задачу на настоящем собесе?
Решили0
Пробовали0
Отправок0
Принято—
Темы
Похожие задачиПорядок сборки модулей СредняяОчередь на курсы СредняяЛучшие корни дерева СредняяОднозначный порядок по фрагментам СредняяПути, которые всегда заканчиваются Средняя
загружаем Python…
Вход
n=4, roads=[[0, 1], [0, 2], [1, 3], [2, 3]], start=0, goal=3
Ожидается
True

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