Menu
CoddyTech

Network Delay Time

Una rete ha n nodi, numerati da 1 a n. I suoi collegamenti sono forniti come un elenco times, dove times[i] = [u, v, w] significa che un segnale inviato dal nodo u raggiunge il nodo v dopo w unità di tempo. I collegamenti funzionano in una sola direzione.

Un segnale parte dal nodo k al tempo 0 e viaggia lungo tutti i collegamenti che può raggiungere. 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 diretti, 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 gli stessi u e 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 nodo 3 riceve il segnale al tempo 1. Il nodo 2 potrebbe riceverlo al tempo 4 tramite il collegamento diretto, ma il percorso attraverso il nodo 3 arriva a 1 + 2 = 3, e il nodo 4 lo riceve a 3 + 1 = 4. Il nodo 4 è l’ultimo, al tempo 4.

lock icon+16 test nascosti all’invio

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
Casi di test

Caso 1

Caso 2

Caso 3

Input

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

Atteso

4