Menu
CoddyTech

Network Delay Time

Una rete ha n nodi etichettati da 1 a n. Il collegamento times[i] = [u, v, w] trasmette un segnale dal nodo u al nodo v in w unità di tempo, solo in quella direzione.

Un segnale parte dal nodo k al tempo 0 e viaggia lungo ogni collegamento possibile. Restituisci il tempo in cui lo riceve l'ultimo nodo oppure -1 se un nodo non lo riceve mai.

Funzione

networkDelayTime(times: integer-2d-array, n: integer, k: integer) → integer
timesinteger-2d-array
i collegamenti orientati, ciascuno come [u, v, w]
ninteger
il numero di nodi
kinteger
il nodo che invia il segnale
Restituisceinteger
il momento in cui l’ultimo nodo riceve il segnale, oppure -1

Vincoli

  • 2 ≤ n ≤ 3000
  • 1 ≤ times.length ≤ 4000
  • times[i].length = 3
  • 1 ≤ u, v ≤ n e u ≠ v
  • 0 ≤ w ≤ 100
  • Nessuna coppia di collegamenti condivide sia lo stesso u sia lo stesso v.
  • 1 ≤ k ≤ n

Esempi

Input
times = [[1, 2, 4], [1, 3, 1], [3, 2, 2], [2, 4, 1]]n = 4k = 1
Output
4
Spiegazione
Il collegamento diretto raggiunge il nodo 2 al tempo 4, ma il percorso attraverso il nodo 3 arriva a 1 + 2 = 3. Il nodo 4 riceve il segnale per ultimo, a 3 + 1 = 4.
challenge icon

Per approfondire

Supponiamo che il segnale si attenui dopo aver attraversato m collegamenti. Come trovi il tempo in cui l'ultimo nodo lo sente entro quel limite?

Ripristina il codice
def networkDelayTime(times, n, k):
    # Scrivi il codice qui

Test #1

Test #2

Test #3

Argomenti

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

Output atteso

4