Menu
CoddyTech

Cheapest Flights Within K Stops

Il y a n villes, numérotées de 0 à n-1, et une liste de vols aller simple : flights[i] = [from, to, price] est un vol de la ville from à la ville to qui coûte price.

Renvoie le prix total le plus bas d’un trajet de src à dst comportant au maximum k escales, c’est-à-dire au maximum k+1 vols. Si aucun trajet de ce type n’existe, renvoie -1.

Fonction

findCheapestPrice(n: integer, flights: integer-2d-array, src: integer, dst: integer, k: integer) → integer
ninteger
le nombre de villes
flightsinteger-2d-array
les vols aller simple, chacun sous la forme [from, to, price]
srcinteger
la ville où commence le voyage
dstinteger
la ville où le voyage se termine
kinteger
le plus grand nombre d’arrêts autorisés entre src et dst
Renvoieinteger
le prix le plus bas d’un trajet avec au plus k arrêts, ou -1

Contraintes

  • 2 ≤ n ≤ 1000
  • 1 ≤ flights.length ≤ 4500
  • flights[i] = [from, to, price] avec 0 ≤ from, to < n et from ≠ to
  • 1 ≤ price ≤ 104
  • Il n’existe pas deux vols ayant à la fois le même from et le même to.
  • 0 ≤ src, dst < n et src ≠ dst
  • 0 ≤ k < n

Exemples

Entrée
n = 4flights = [[0, 1, 50], [1, 2, 50], [2, 3, 50], [0, 2, 200], [1, 3, 180]]src = 0dst = 3k = 1
Sortie
230
Explication
Une escale permet deux vols : 0 → 1 → 3 coûte 50 + 180 = 230 et 0 → 2 → 3 coûte 200 + 50 = 250. L’itinéraire moins cher 0 → 1 → 2 → 3 comporte deux escales.
challenge icon

Pour aller plus loin

Comment retourner les villes du trajet le moins cher ainsi que son prix ?

Réinitialiser le code
def findCheapestPrice(n, flights, src, dst, k):
    # Écrivez le code ici

Test #1

Test #2

Test #3

Arguments

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

Résultat attendu

230