Menu
CoddyTech

Network Delay Time

Ein Netzwerk hat n Knoten, die von 1 bis n nummeriert sind. Die Verbindung times[i] = [u, v, w] überträgt ein Signal in dieser Richtung und benötigt dafür w Zeiteinheiten, um von Knoten u zu Knoten v zu gelangen.

Ein Signal verlässt zum Zeitpunkt 0 den Knoten k und läuft über jede Verbindung, die es erreichen kann. Gib den Zeitpunkt zurück, zu dem der letzte Knoten das Signal empfängt, oder -1, wenn ein Knoten es nie empfängt.

Funktion

networkDelayTime(times: integer-2d-array, n: integer, k: integer) → integer
timesinteger-2d-array
die gerichteten Verbindungen, jeweils als [u, v, w]
ninteger
die Anzahl der Knoten
kinteger
der Knoten, der das Signal sendet
Gibt zurückinteger
der Zeitpunkt, zu dem der letzte Knoten das Signal empfängt, oder -1

Einschränkungen

  • 2 ≤ n ≤ 3000
  • 1 ≤ times.length ≤ 4000
  • times[i].length = 3
  • 1 ≤ u, v ≤ n und u ≠ v
  • 0 ≤ w ≤ 100
  • Keine zwei Kanten haben dasselbe u und dasselbe v.
  • 1 ≤ k ≤ n

Beispiele

Eingabe
times = [[1, 2, 4], [1, 3, 1], [3, 2, 2], [2, 4, 1]]n = 4k = 1
Ausgabe
4
Erklärung
Die direkte Verbindung erreicht Knoten 2 zum Zeitpunkt 4, aber der Weg über Knoten 3 kommt bei 1 + 2 = 3 an. Knoten 4 empfängt das Signal zuletzt, bei 3 + 1 = 4.
challenge icon

Weiterführende Frage

Angenommen, das Signal wird nach dem Überqueren von m Verbindungen schwächer. Wie findest du die Zeit, zu der der letzte Knoten es unter dieser Grenze hört?

Code zurücksetzen
def networkDelayTime(times, n, k):
    # Schreibe hier den Code

Test #1

Test #2

Test #3

Argumente

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

Erwartete Ausgabe

4