Menu
CoddyTech

Network Delay Time

Un réseau comporte n nœuds étiquetés de 1 à n. Le lien times[i] = [u, v, w] transporte un signal du nœud u au nœud v en w unités de temps, uniquement dans cette direction.

Un signal quitte le nœud k à l’instant 0 et se propage le long de chaque lien qu’il peut emprunter. Renvoyez le temps auquel le dernier nœud le reçoit, ou -1 si un nœud ne le reçoit jamais.

Fonction

networkDelayTime(times: integer-2d-array, n: integer, k: integer) → integer
timesinteger-2d-array
les liens orientés, chacun sous la forme [u, v, w]
ninteger
le nombre de nœuds
kinteger
le nœud qui envoie le signal
Renvoieinteger
le moment où le dernier nœud reçoit le signal, ou -1

Contraintes

  • 2 ≤ n ≤ 3000
  • 1 ≤ times.length ≤ 4000
  • times[i].length = 3
  • 1 ≤ u, v ≤ n et u ≠ v
  • 0 ≤ w ≤ 100
  • Aucun couple de liens ne possède à la fois le même u et le même v.
  • 1 ≤ k ≤ n

Exemples

Entrée
times = [[1, 2, 4], [1, 3, 1], [3, 2, 2], [2, 4, 1]]n = 4k = 1
Sortie
4
Explication
Le lien direct atteint le nœud 2 au temps 4, mais l’itinéraire passant par le nœud 3 arrive à 1 + 2 = 3. Le nœud 4 reçoit le signal en dernier, à 3 + 1 = 4.
challenge icon

Pour aller plus loin

Supposons que le signal s’atténue après avoir traversé m liens. Comment trouver le temps auquel le dernier nœud l’entend dans cette limite ?

Réinitialiser le code
def networkDelayTime(times, n, k):
    # Écrivez le code ici

Test #1

Test #2

Test #3

Arguments

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

Résultat attendu

4