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