Menu
CoddyTech

Cheapest Flights Within K Stops

Hay n ciudades, numeradas del 0 al n-1, y una lista de vuelos de ida: flights[i] = [from, to, price] es un vuelo desde la ciudad from hasta la ciudad to que cuesta price.

Devuelve el precio total más bajo de un viaje desde src hasta dst que haga como máximo k escalas, es decir, como máximo k+1 vuelos. Si no existe tal viaje, devuelve -1.

Función

findCheapestPrice(n: integer, flights: integer-2d-array, src: integer, dst: integer, k: integer) → integer
ninteger
el número de ciudades
flightsinteger-2d-array
los vuelos de solo ida, cada uno como [from, to, price]
srcinteger
la ciudad donde comienza el viaje
dstinteger
la ciudad donde termina el viaje
kinteger
la mayor cantidad de paradas permitida entre src y dst
Devuelveinteger
el precio más bajo de un viaje con como máximo k paradas, o -1

Restricciones

  • 2 ≤ n ≤ 1000
  • 1 ≤ flights.length ≤ 4500
  • flights[i] = [from, to, price] con 0 ≤ from, to < n y from ≠ to
  • 1 ≤ price ≤ 104
  • No hay dos vuelos que compartan tanto from como to.
  • 0 ≤ src, dst < n y src ≠ dst
  • 0 ≤ k < n

Ejemplos

Entrada
n = 4flights = [[0, 1, 50], [1, 2, 50], [2, 3, 50], [0, 2, 200], [1, 3, 180]]src = 0dst = 3k = 1
Salida
230
Explicación
Una escala permite dos vuelos: 0 → 1 → 3 cuesta 50 + 180 = 230 y 0 → 2 → 3 cuesta 200 + 50 = 250. La opción más barata, 0 → 1 → 2 → 3, hace dos escalas.
challenge icon

Para ir más allá

¿Cómo devolverías las ciudades del viaje más barato, así como su precio?

Restablecer código
def findCheapestPrice(n, flights, src, dst, k):
    # Escribe el código aquí

Prueba #1

Prueba #2

Prueba #3

Argumentos

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

Salida Esperada

230