Menu
CoddyTech

Cheapest Flights Within K Stops

Есть n городов, пронумерованных от 0 до n-1, и список рейсов в одну сторону: flights[i] = [from, to, price] — это рейс из города from в город to стоимостью price.

Верните минимальную общую стоимость поездки из src в dst с не более чем k пересадками по пути, то есть не более чем k+1 рейсами. Если такой поездки не существует, верните -1.

Функция

findCheapestPrice(n: integer, flights: integer-2d-array, src: integer, dst: integer, k: integer) → integer
ninteger
количество городов
flightsinteger-2d-array
рейсы в одну сторону, каждый в формате [from, to, price]
srcinteger
город, в котором начинается поездка
dstinteger
город, в котором заканчивается поездка
kinteger
максимально допустимое количество остановок между src и dst
Возвращаетinteger
минимальная стоимость поездки не более чем с k пересадками или -1

Ограничения

  • 2 ≤ n ≤ 1000
  • 1 ≤ flights.length ≤ 4500
  • flights[i] = [from, to, price] при 0 ≤ from, to < n и from ≠ to
  • 1 ≤ price ≤ 104
  • Ни у каких двух рейсов не совпадают одновременно from и to.
  • 0 ≤ src, dst < n и src ≠ dst
  • 0 ≤ k < n

Примеры

Ввод
n = 4flights = [[0, 1, 50], [1, 2, 50], [2, 3, 50], [0, 2, 200], [1, 3, 180]]src = 0dst = 3k = 1
Вывод
230
Пояснение
Одна пересадка допускает два перелёта: 0 → 1 → 3 стоит 50 + 180 = 230, а 0 → 2 → 3 стоит 200 + 50 = 250. Более дешёвый маршрут 0 → 1 → 2 → 3 включает две пересадки.
challenge icon

Дополнительный вопрос

Как вернуть города, входящие в самую дешёвую поездку, а также её цену?

Сбросить код
def findCheapestPrice(n, flights, src, dst, k):
    # Напишите код здесь

Тест #1

Тест #2

Тест #3

Аргументы

n = 4
flights = [[0, 1, 50], [1, 2, 50], [2, 3, 50], [0, 2, 200], [1, 3, 180]]
src = 0
dst = 3
k = 1

Ожидаемый вывод

230