Menu
CoddyTech

Network Delay Time

Uma rede tem n nós, rotulados de 1 a n. Você recebe suas conexões em uma lista times, na qual times[i] = [u, v, w] significa que um sinal enviado do nó u chega ao nó v após w unidades de tempo. As conexões funcionam em apenas uma direção.

Um sinal sai do nó k no instante 0 e percorre todas as conexões 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
os links direcionados, cada um 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
  • Nenhum par de links compartilha os mesmos valores de u e 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 nó 3 ouve o sinal no instante 1. O nó 2 poderia ouvi-lo no instante 4 pelo link direto, mas a rota pelo nó 3 chega em 1 + 2 = 3, e o nó 4 o ouve em 3 + 1 = 4. O nó 4 é o último, no instante 4.

lock icon+16 testes ocultos ao enviar

challenge icon

Para ir além

Suponha que o sinal desapareça após 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
Casos de teste

Caso 1

Caso 2

Caso 3

Entrada

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

Esperado

4