Ctrl K

Дороги на быстрейших маршрутах

Сложная
В городе stops остановок с номерами от 0 до stops - 1 и двусторонние дороги между ними: roads[i] = [a, b, w] — дорога между a и b, проезд по которой занимает w минут. Город может быть несвязным. Рассмотрим все быстрейшие маршруты от остановки 0 до остановки stops - 1. Верните массив answer, где answer[i] равно True, если дорога i входит хотя бы в один быстрейший маршрут, и False иначе. Если до stops - 1 не добраться, все значения False.
Пример 1
stops=5, roads=[[0, 1, 2], [1, 4, 5], [0, 2, 3], [2, 4, 4], [2, 3, 1], [3, 4, 2]] → [False, False, True, False, True, True]

Быстрейшее время до остановки 4 равно 6: путь 0 → 2 → 3 → 4 (3 + 1 + 2). Путь 0 → 1 → 4 занимает 7, а 0 → 2 → 4 — тоже 7, поэтому дороги 0, 1 и 3 не нужны.

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

Два быстрейших маршрута, 0 → 1 → 3 и 0 → 2 → 3, оба за 2. Их дороги покрывают все четыре.

Пример 3
stops=3, roads=[[0, 1, 7]] → [False]

До остановки 2 не добраться, поэтому ни одна дорога не подходит.

Ограничения
  • 2 ≤ stops ≤ 5 · 10⁴
  • 1 ≤ len(roads) ≤ min(5 · 10⁴, stops · (stops - 1) / 2)
  • roads[i] = [a, b, w], 0 ≤ a, b < stops, a ≠ b
  • 1 ≤ w ≤ 10⁵
  • Между двумя остановками не больше одной дороги
Встречал эту задачу на настоящем собесе?
Решили0
Пробовали0
Отправок0
Принято—
Темы
Похожие задачиШарик и лунка СложнаяКратчайший путь катящегося шарика СредняяВремя оповещения сети СредняяДешёвый перелёт с малым числом пересадок СредняяПерекрасить стрелки до выхода Сложная
загружаем Python…
Вход
stops=5, roads=[[0, 1, 2], [1, 4, 5], [0, 2, 3], [2, 4, 4], [2, 3, 1], [3, 4, 2]]
Ожидается
[False, False, True, False, True, True]

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