Ctrl K

Сувенир с возвращением

Средняя
В стране n городов, пронумерованных от 1 до n. Дороги двусторонние: roads[i] = [a, b, cost] — дорога между городами a и b, проезд по ней стоит cost. В каждом городе продаётся сувенир; в городе i он стоит prices[i - 1]. Вы выезжаете из своего города, добираетесь по дорогам до любого города (можно остаться в своём), покупаете там ровно один сувенир и возвращаетесь домой. На обратном пути вы везёте покупку, поэтому каждая дорога обходится в k раз дороже обычного. Верните массив длины n, где i-й элемент (с нуля) — минимальная полная стоимость поездки за сувениром для того, кто живёт в городе i + 1. Граф может быть несвязным.
Пример 1
n=3, roads=[[1, 2, 3], [2, 3, 10]], prices=[20, 9, 4], k=2 → [18, 9, 4]

Из города 1: съездить в город 2 (3), купить за 9 и вернуться (3 · 2 = 6) — итого 18, дешевле, чем 20 на месте. Город 2 покупает у себя за 9. Город 3 покупает у себя за 4.

Пример 2
n=2, roads=[[1, 2, 1]], prices=[50, 10], k=1 → [12, 10]

Из города 1 выгодно съездить в город 2: 1 + 10 + 1 = 12.

Пример 3
n=4, roads=[[1, 2, 5], [3, 4, 1]], prices=[7, 30, 30, 2], k=3 → [7, 27, 6, 2]
Ограничения
  • 2 ≤ n ≤ 1000
  • 1 ≤ len(roads) ≤ 2000
  • 1 ≤ a, b ≤ n, a ≠ b, между парой городов не больше одной дороги
  • 1 ≤ cost ≤ 10⁵
  • len(prices) = n, 1 ≤ prices[i] ≤ 10⁵
  • 1 ≤ k ≤ 100
Встречал эту задачу на настоящем собесе?
Решили0
Пробовали0
Отправок0
Принято—
Темы
Похожие задачиКратчайший путь катящегося шарика СредняяСамый надёжный маршрут сообщения СредняяПуть через туннели СредняяБлижайшая отмеченная вершина СредняяОстановки, которые закрываются Средняя
загружаем Python…
Вход
n=3, roads=[[1, 2, 3], [2, 3, 10]], prices=[20, 9, 4], k=2
Ожидается
[18, 9, 4]

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