Menu
CoddyTech

Cheapest Flights Within K Stops

Có n thành phố, được đánh số từ 0 đến n-1, và một danh sách các chuyến bay một chiều: flights[i] = [from, to, price] là chuyến bay từ thành phố from đến thành phố to, có giá price.

Trả về tổng giá thấp nhất của chuyến đi từ src đến dst với nhiều nhất k điểm dừng trên đường đi, nghĩa là nhiều nhất k+1 chuyến bay. Nếu không tồn tại chuyến đi như vậy, hãy trả về -1.

Hàm

findCheapestPrice(n: integer, flights: integer-2d-array, src: integer, dst: integer, k: integer) → integer
ninteger
số lượng thành phố
flightsinteger-2d-array
các chuyến bay một chiều, mỗi chuyến có dạng [from, to, price]
srcinteger
thành phố nơi chuyến đi bắt đầu
dstinteger
thành phố nơi chuyến đi kết thúc
kinteger
số trạm dừng tối đa được phép giữa src và dst
Trả vềinteger
giá thấp nhất của chuyến đi có tối đa k điểm dừng, hoặc -1

Ràng buộc

  • 2 ≤ n ≤ 1000
  • 1 ≤ flights.length ≤ 4500
  • flights[i] = [from, to, price] với 0 ≤ from, to < n và from ≠ to
  • 1 ≤ price ≤ 104
  • Không có hai chuyến bay nào có cùng cả from và to.
  • 0 ≤ src, dst < n và src ≠ dst
  • 0 ≤ k < n

Ví dụ

Đầu vào
n = 4flights = [[0, 1, 50], [1, 2, 50], [2, 3, 50], [0, 2, 200], [1, 3, 180]]src = 0dst = 3k = 1
Đầu ra
230
Giải thích
Một điểm dừng cho phép hai chuyến bay: 0 → 1 → 3 có giá 50 + 180 = 230 và 0 → 2 → 3 có giá 200 + 50 = 250. Lộ trình rẻ hơn 0 → 1 → 2 → 3 có hai điểm dừng.
challenge icon

Câu hỏi mở rộng

Bạn sẽ trả về những thành phố trong chuyến đi rẻ nhất cùng với giá của chuyến đi đó như thế nào?

Đặt lại code
def findCheapestPrice(n, flights, src, dst, k):
    # Viết code ở đây

Kiểm thử #1

Kiểm thử #2

Kiểm thử #3

Đối số

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

Đầu ra mong đợi

230