Menu
CoddyTech

Network Delay Time

Uma rede tem n nós rotulados de 1 a n. O link times[i] = [u, v, w] transporta um sinal do nó u para o nó v em w unidades de tempo, apenas nessa direção.

Um sinal parte do nó k no instante 0 e percorre todos os links que conseguir. Retorne o instante em que o último nó o recebe ou -1 se algum nó nunca o receber.

Função

networkDelayTime(times: integer-2d-array, n: integer, k: integer) → integer
timesinteger-2d-array
as arestas direcionadas, cada uma como [u, v, w]
ninteger
o número de nós
kinteger
o nó que envia o sinal
Retornainteger
o momento em que o último nó recebe o sinal, ou -1

Restrições

  • 2 ≤ n ≤ 3000
  • 1 ≤ times.length ≤ 4000
  • times[i].length = 3
  • 1 ≤ u, v ≤ n e u ≠ v
  • 0 ≤ w ≤ 100
  • Não há dois links que compartilhem o mesmo u e o mesmo v.
  • 1 ≤ k ≤ n

Exemplos

Entrada
times = [[1, 2, 4], [1, 3, 1], [3, 2, 2], [2, 4, 1]]n = 4k = 1
Saída
4
Explicação
O link direto chega ao nó 2 no tempo 4, mas a rota pelo nó 3 chega em 1 + 2 = 3. O nó 4 recebe o sinal por último, em 3 + 1 = 4.
challenge icon

Para ir além

Suponha que o sinal desapareça depois de atravessar m links. Como você encontra o tempo em que o último nó o ouve dentro desse limite?

Redefinir código
def networkDelayTime(times, n, k):
    # Escreva o código aqui

Teste #1

Teste #2

Teste #3

Argumentos

times = [[1, 2, 4], [1, 3, 1], [3, 2, 2], [2, 4, 1]]
n = 4
k = 1

Saída Esperada

4