Ctrl K

Второй по скорости маршрут через светофоры

Сложная
В городе crossings перекрёстков с номерами от 1 до crossings. Двусторонние дороги заданы списком roads, где roads[i] = [u, v] соединяет перекрёстки u и v. Любая дорога проезжается ровно за ride минут. Из любого перекрёстка можно доехать до любого другого. На каждом перекрёстке стоит светофор. Все светофоры переключаются одновременно каждые switch минут: в момент 0 они только что стали зелёными, через switch минут — красными, ещё через switch — снова зелёными и так далее. На перекрёсток можно въехать в любой момент, а уехать с него — только на зелёный. Стоять на зелёном нельзя: если горит зелёный, нужно сразу ехать дальше. Водитель стартует с перекрёстка 1 в момент 0 и едет на перекрёсток crossings. Ездить по одним и тем же дорогам и перекрёсткам можно сколько угодно раз. Верните второе по величине время прибытия — наименьшее время, которое **строго больше** самого быстрого.
Пример 1
crossings=3, roads=[[1, 2], [2, 3], [1, 3]], ride=4, switch=5 → 8

Быстрее всего ехать напрямую 1 → 3: 4 минуты. Следующий по скорости путь 1 → 2 → 3: на перекрёсток 2 приезжаем в минуту 4, свет ещё зелёный (он сменится в минуту 5), едем дальше и прибываем в минуту 8.

Пример 2
crossings=2, roads=[[1, 2]], ride=2, switch=3 → 8

Быстрее всего — 2 минуты. Второй результат даёт путь 1 → 2 → 1 → 2: в 2 приезжаем в минуту 2 (зелёный), обратно в 1 — в минуту 4, там красный до минуты 6, ждём и приезжаем в 2 в минуту 8.

Ограничения
  • 2 ≤ crossings ≤ 10⁴
  • crossings − 1 ≤ len(roads) ≤ min(2·10⁴, crossings·(crossings − 1)/2)
  • 1 ≤ u, v ≤ crossings, u ≠ v
  • Любые два перекрёстка соединены не более чем одной дорогой
  • Граф связный
  • 1 ≤ ride, switch ≤ 1000
Встречал эту задачу на настоящем собесе?
Решили0
Пробовали0
Отправок0
Принято—
Темы
Похожие задачиШарик и лунка СложнаяПерекрасить стрелки до выхода СложнаяСквозь стены в дальний угол СложнаяЗалы, открывающиеся по расписанию СложнаяДороги на быстрейших маршрутах Сложная
загружаем Python…
Вход
crossings=3, roads=[[1, 2], [2, 3], [1, 3]], ride=4, switch=5
Ожидается
8

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