Menu
CoddyTech

Network Delay Time

Sieć ma n węzłów oznaczonych od 1 do n. Łącze times[i] = [u, v, w] przenosi sygnał z węzła u do węzła v w czasie w, tylko w tym kierunku.

Sygnał opuszcza węzeł k w chwili 0 i rozchodzi się wszystkimi łączami, którymi może. Zwróć czas, w którym odbierze go ostatni węzeł, lub -1, jeśli sygnał nigdy nie dotrze do któregoś węzła.

Funkcja

networkDelayTime(times: integer-2d-array, n: integer, k: integer) → integer
timesinteger-2d-array
skierowane krawędzie, każda w postaci [u, v, w]
ninteger
liczba węzłów
kinteger
węzeł, który wysyła sygnał
Zwracainteger
czas, w którym ostatni węzeł odbiera sygnał, lub -1

Ograniczenia

  • 2 ≤ n ≤ 3000
  • 1 ≤ times.length ≤ 4000
  • times[i].length = 3
  • 1 ≤ u, v ≤ n oraz u ≠ v
  • 0 ≤ w ≤ 100
  • Żadne dwie krawędzie nie mają jednocześnie takich samych u i v.
  • 1 ≤ k ≤ n

Przykłady

Wejście
times = [[1, 2, 4], [1, 3, 1], [3, 2, 2], [2, 4, 1]]n = 4k = 1
Wyjście
4
Wyjaśnienie
Bezpośrednie połączenie dociera do węzła 2 w czasie 4, ale trasa przez węzeł 3 dociera po 1 + 2 = 3. Węzeł 4 odbiera sygnał jako ostatni, po 3 + 1 = 4.
challenge icon

Pytanie dodatkowe

Załóżmy, że sygnał zanika po przejściu przez m łączy. Jak znaleźć czas, w którym ostatni węzeł go usłyszy, nie przekraczając tego limitu?

Zresetuj kod
def networkDelayTime(times, n, k):
    # Wpisz kod tutaj

Test #1

Test #2

Test #3

Argumenty

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

Oczekiwany wynik

4