Ctrl K

Путь через туннели

Средняя
Вы стоите на плоскости в точке start = [x, y] и хотите попасть в точку finish. Пешком из точки (x1, y1) в точку (x2, y2) идти стоит |x2 - x1| + |y2 - y1|. Кроме того, есть туннели: tunnels[i] = [x1, y1, x2, y2, cost] — односторонний туннель из точки (x1, y1) в точку (x2, y2), проезд стоит cost. Каждым туннелем можно пользоваться сколько угодно раз, а можно не пользоваться вовсе. Верните минимальную стоимость пути из start в finish.
Пример 1
start=[1, 1], finish=[9, 3], tunnels=[[2, 1, 8, 3, 2], [8, 3, 1, 1, 1]] → 4

Пешком до входа первого туннеля (2, 1) — 1, туннель — 2, от выхода (8, 3) до финиша — 1. Итого 4 вместо 10 пешком. Второй туннель ведёт в обратную сторону и не помогает.

Пример 2
start=[5, 5], finish=[6, 7], tunnels=[[5, 5, 6, 7, 10]] → 3

Туннель стоит 10, а пешком всего |6 − 5| + |7 − 5| = 3.

Пример 3
start=[1, 1], finish=[20, 20], tunnels=[[1, 2, 10, 10, 3], [10, 11, 20, 19, 3], [12, 12, 1, 1, 1]] → 9
Ограничения
  • len(start) = len(finish) = 2
  • 1 ≤ len(tunnels) ≤ 400
  • len(tunnels[i]) = 5
  • все координаты и стоимости — целые от 1 до 10⁵
Встречал эту задачу на настоящем собесе?
Решили0
Пробовали0
Отправок0
Принято—
Темы
Похожие задачиКратчайший путь катящегося шарика СредняяСамый надёжный маршрут сообщения СредняяСувенир с возвращением СредняяБлижайшая отмеченная вершина СредняяОстановки, которые закрываются Средняя
загружаем Python…
Вход
start=[1, 1], finish=[9, 3], tunnels=[[2, 1, 8, 3, 2], [8, 3, 1, 1, 1]]
Ожидается
4

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