Menu
CoddyTech

Cheapest Flights Within K Stops

Ada n kota yang diberi nomor dari 0 hingga n-1, serta daftar penerbangan satu arah: flights[i] = [from, to, price] adalah penerbangan dari kota from ke kota to dengan biaya price.

Kembalikan total harga terendah untuk perjalanan dari src ke dst dengan paling banyak k kali transit, yang berarti paling banyak k+1 penerbangan. Jika perjalanan seperti itu tidak ada, kembalikan -1.

Fungsi

findCheapestPrice(n: integer, flights: integer-2d-array, src: integer, dst: integer, k: integer) → integer
ninteger
jumlah kota
flightsinteger-2d-array
penerbangan satu arah, masing-masing sebagai [from, to, price]
srcinteger
kota tempat perjalanan dimulai
dstinteger
kota tempat perjalanan berakhir
kinteger
jumlah perhentian maksimum yang diizinkan antara src dan dst
Mengembalikaninteger
harga terendah untuk perjalanan dengan paling banyak k pemberhentian, atau -1

Batasan

  • 2 ≤ n ≤ 1000
  • 1 ≤ flights.length ≤ 4500
  • flights[i] = [from, to, price] dengan 0 ≤ from, to < n dan from ≠ to
  • 1 ≤ price ≤ 104
  • Tidak ada dua penerbangan yang memiliki from dan to yang sama.
  • 0 ≤ src, dst < n dan src ≠ dst
  • 0 ≤ k < n

Contoh

Input
n = 4flights = [[0, 1, 50], [1, 2, 50], [2, 3, 50], [0, 2, 200], [1, 3, 180]]src = 0dst = 3k = 1
Output
230
Penjelasan
Satu pemberhentian memungkinkan dua penerbangan: 0 → 1 → 3 biayanya 50 + 180 = 230 dan 0 → 2 → 3 biayanya 200 + 50 = 250. Rute yang lebih murah, 0 → 1 → 2 → 3, memiliki dua pemberhentian.
challenge icon

Pertanyaan lanjutan

Bagaimana cara mengembalikan kota-kota dalam perjalanan termurah beserta harganya?

Reset kode
def findCheapestPrice(n, flights, src, dst, k):
    # Tulis kodemu di sini

Tes #1

Tes #2

Tes #3

Argumen

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

Output yang diharapkan

230