Ctrl K

Поездки на самокате с лимитом дороги

Сложная
В городе n перекрёстков с номерами от 0 до n - 1. Двусторонние дороги заданы массивом roads: запись [u, v, d] значит, что перекрёстки u и v соединяет дорога длиной d. Между двумя перекрёстками может быть несколько дорог. Курьер ездит на электросамокате, и у каждой поездки свой заряд. Поездка trips[j] = [from, to, limit] означает: можно ехать по любой цепочке дорог, но **каждая** дорога на пути должна быть строго короче limit — длинный участок без подзарядки самокат не осилит. Верните массив булевых значений: j-й элемент равен true, если из from можно добраться до to в j-й поездке, иначе false.
Пример 1
n=4, roads=[[0, 1, 3], [1, 2, 7], [2, 3, 2], [0, 3, 9]], trips=[[0, 2, 8], [0, 3, 7], [1, 3, 10]] → [True, False, True]

В первой поездке едем 0 → 1 → 2 по дорогам длиной 3 и 7, обе короче 8. Во второй нужна дорога меньше 7: из 0 выходит только дорога длиной 3 к перекрёстку 1, дальше дороги длиной 7 и 9 закрыты — ответ false. В третьей годятся все дороги.

Пример 2
n=3, roads=[[0, 1, 5], [0, 1, 1]], trips=[[0, 1, 2], [1, 2, 100]] → [True, False]

Между 0 и 1 две дороги, короткая (длина 1) подходит при лимите 2. До перекрёстка 2 дорог нет вовсе.

Ограничения
  • 2 ≤ n ≤ 10⁵
  • 1 ≤ len(roads), len(trips) ≤ 10⁵
  • roads[i] = [u, v, d], trips[j] = [from, to, limit]
  • 0 ≤ u, v, from, to ≤ n - 1
  • u ≠ v, from ≠ to
  • 1 ≤ d, limit ≤ 10⁹
Встречал эту задачу на настоящем собесе?
Решили0
Пробовали0
Отправок0
Принято—
Темы
Похожие задачиУровни клеток по строкам и столбцам СложнаяЗагруженные пары серверов СложнаяСжать таблицу чисел СложнаяМаршруты между равными вершинами СложнаяСколько клеток зальёт вода Сложная
загружаем Python…
Вход
n=4, roads=[[0, 1, 3], [1, 2, 7], [2, 3, 2], [0, 3, 9]], trips=[[0, 2, 8], [0, 3, 7], [1, 3, 10]]
Ожидается
[True, False, True]

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