Menu
CoddyTech

Cheapest Flights Within K Stops

Há n cidades, numeradas de 0 a n-1, e uma lista de voos só de ida: flights[i] = [from, to, price] é um voo da cidade from para a cidade to que custa price.

Retorne o menor preço total de uma viagem de src até dst que faça no máximo k paradas no caminho, o que significa no máximo k+1 voos. Se não existir uma viagem assim, retorne -1.

Função

findCheapestPrice(n: integer, flights: integer-2d-array, src: integer, dst: integer, k: integer) → integer
ninteger
o número de cidades
flightsinteger-2d-array
os voos de ida, cada um como [from, to, price]
srcinteger
a cidade onde a viagem começa
dstinteger
a cidade onde a viagem termina
kinteger
o maior número de paradas permitido entre src e dst
Retornainteger
o menor preço de uma viagem com no máximo k paradas, ou -1

Restrições

  • 2 ≤ n ≤ 1000
  • 1 ≤ flights.length ≤ 4500
  • flights[i] = [from, to, price] com 0 ≤ from, to < n e from ≠ to
  • 1 ≤ price ≤ 104
  • Nenhum par de voos compartilha from e to.
  • 0 ≤ src, dst < n e src ≠ dst
  • 0 ≤ k < n

Exemplos

Entrada
n = 4flights = [[0, 1, 50], [1, 2, 50], [2, 3, 50], [0, 2, 200], [1, 3, 180]]src = 0dst = 3k = 1
Saída
230
Explicação
Uma parada permite dois voos: 0 → 1 → 3 custa 50 + 180 = 230, e 0 → 2 → 3 custa 200 + 50 = 250. A opção mais barata, 0 → 1 → 2 → 3, faz duas paradas.
challenge icon

Para ir além

Como você retornaria as cidades da viagem mais barata e também o preço dela?

Redefinir código
def findCheapestPrice(n, flights, src, dst, k):
    # Escreva o código aqui

Teste #1

Teste #2

Teste #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

Saída Esperada

230