Menu
CoddyTech

Network Delay Time

Un réseau comporte n nœuds, numérotés de 1 à n. Vous obtenez ses liaisons sous la forme d’une liste times, où times[i] = [u, v, w] signifie qu’un signal envoyé depuis le nœud u atteint le nœud v après w unités de temps. Les liaisons ne fonctionnent que dans un seul sens.

Un signal part du nœud k au temps 0 et se propage le long de toutes les liaisons 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 lien ne partage à 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 nœud 3 reçoit le signal au temps 1. Le nœud 2 pourrait le recevoir au temps 4 via sa liaison directe, mais le trajet passant par le nœud 3 arrive à 1 + 2 = 3, et le nœud 4 le reçoit à 3 + 1 = 4. Le nœud 4 est le dernier, au temps 4.

lock icon+16 tests cachés à la soumission

challenge icon

Pour aller plus loin

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

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

Cas 1

Cas 2

Cas 3

Entrée

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

Attendu

4