Menu
CoddyTech

Network Delay Time

Una red tiene n nodos etiquetados del 1 al n. El enlace times[i] = [u, v, w] transporta una señal del nodo u al nodo v en w unidades de tiempo, solo en esa dirección.

Una señal sale del nodo k en el tiempo 0 y viaja por todos los enlaces que puede. Devuelve el tiempo en que la recibe el último nodo, o -1 si hay algún nodo que 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
  • No hay dos enlaces que compartan tanto el mismo u como el mismo 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 enlace directo llega al nodo 2 en el tiempo 4, pero la ruta a través del nodo 3 llega en 1 + 2 = 3. El nodo 4 recibe la señal al final, en 3 + 1 = 4.
challenge icon

Para ir más allá

Supón que la señal se desvanece después de cruzar m enlaces. ¿Cómo encuentras el tiempo 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í

Prueba #1

Prueba #2

Prueba #3

Argumentos

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

Salida Esperada

4