Menu
CoddyTech

Cheapest Flights Within K Stops

Jest n miast, ponumerowanych od 0 do n-1, oraz lista lotów w jedną stronę: flights[i] = [from, to, price] oznacza lot z miasta from do miasta to, który kosztuje price.

Zwróć najniższą łączną cenę podróży z src do dst, która obejmuje najwyżej k przesiadek po drodze, czyli najwyżej k+1 lotów. Jeśli taka podróż nie istnieje, zwróć -1.

Funkcja

findCheapestPrice(n: integer, flights: integer-2d-array, src: integer, dst: integer, k: integer) → integer
ninteger
liczba miast
flightsinteger-2d-array
loty w jedną stronę, każdy jako [from, to, price]
srcinteger
miasto, w którym rozpoczyna się podróż
dstinteger
miasto, w którym kończy się podróż
kinteger
największa dozwolona liczba przystanków między src a dst
Zwracainteger
najniższa cena podróży z co najwyżej k przesiadkami lub -1

Ograniczenia

  • 2 ≤ n ≤ 1000
  • 1 ≤ flights.length ≤ 4500
  • flights[i] = [from, to, price] przy 0 ≤ from, to < n oraz from ≠ to
  • 1 ≤ price ≤ 104
  • Żadne dwa loty nie mają jednocześnie takiego samego from i to.
  • 0 ≤ src, dst < n i src ≠ dst
  • 0 ≤ k < n

Przykłady

Wejście
n = 4flights = [[0, 1, 50], [1, 2, 50], [2, 3, 50], [0, 2, 200], [1, 3, 180]]src = 0dst = 3k = 1
Wyjście
230
Wyjaśnienie
Jeden przystanek pozwala na dwa loty: 0 → 1 → 3 kosztuje 50 + 180 = 230, a 0 → 2 → 3 kosztuje 200 + 50 = 250. Tańsza trasa 0 → 1 → 2 → 3 obejmuje dwa przystanki.
challenge icon

Pytanie dodatkowe

Jak zwrócić miasta na najtańszej trasie oraz jej cenę?

Zresetuj kod
def findCheapestPrice(n, flights, src, dst, k):
    # Napisz kod tutaj

Test #1

Test #2

Test #3

Argumenty

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

Oczekiwany wynik

230