Menu
CoddyTech

Network Delay Time

Una red tiene n nodos, etiquetados del 1 al n. Recibes sus enlaces como una lista times, donde times[i] = [u, v, w] significa que una señal enviada desde el nodo u llega al nodo v después de w unidades de tiempo. Los enlaces funcionan en una sola dirección.

Una señal sale del nodo k en el instante 0 y viaja por todos los enlaces que puede. Devuelve el instante en que la recibe el último nodo, o -1 si algún nodo nunca la recibe.

Función

networkDelayTime(times: integer-2d-array, n: integer, k: integer) → integer
timesinteger-2d-array
los enlaces dirigidos, cada uno como [u, v, w]
ninteger
el número de nodos
kinteger
el nodo que envía la señal
Devuelveinteger
el momento en que el último nodo recibe la señal, o -1

Restricciones

  • 2 ≤ n ≤ 3000
  • 1 ≤ times.length ≤ 4000
  • times[i].length = 3
  • 1 ≤ u, v ≤ n y u ≠ v
  • 0 ≤ w ≤ 100
  • Ningún par de enlaces comparte los mismos u y v.
  • 1 ≤ k ≤ n

Ejemplos

Entrada
times = [[1, 2, 4], [1, 3, 1], [3, 2, 2], [2, 4, 1]]n = 4k = 1
Salida
4
Explicación
El nodo 3 recibe la señal en el instante 1. El nodo 2 podría recibirla en el instante 4 a través de su conexión directa, pero la ruta a través del nodo 3 llega en 1 + 2 = 3, y el nodo 4 la recibe en 3 + 1 = 4. El nodo 4 es el último, en el instante 4.

lock icon+16 pruebas ocultas al enviar

challenge icon

Para ir más allá

Supón que la señal se debilita después de atravesar m enlaces. ¿Cómo encuentras el momento en que el último nodo la oye dentro de ese límite?

Restablecer código
def networkDelayTime(times, n, k):
    # Escribe el código aquí
Casos de prueba

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