Menu
CoddyTech

Cheapest Flights Within K Stops

n 個の都市があり、都市には 0 から n-1 まで番号が付けられています。また、片道便のリストがあります。flights[i] = [from, to, price] は、都市 from から都市 to までの、料金が price のフライトを表します。

途中の経由地が最大 k 個、つまりフライトが最大 k+1 便となる、src から dst への旅行の最安総額を返してください。そのような旅行が存在しない場合は、-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
  • 出発地と到着地の両方が同じフライトは2つありません。
  • 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
説明
乗り継ぎが1回の場合、2つの経路があります。0 → 1 → 3の費用は50 + 180 = 230で、0 → 2 → 3の費用は200 + 50 = 250です。より安い0 → 1 → 2 → 3は乗り継ぎが2回になります。
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