Menu
CoddyTech

Network Delay Time

В сети есть n узлов, обозначенных числами от 1 до n. Связь times[i] = [u, v, w] передаёт сигнал от узла u к узлу v за w единиц времени только в этом направлении.

Сигнал отправляется из узла k в момент времени 0 и распространяется по всем доступным связям. Верните время, когда его получит последний узел, или -1, если какой-либо узел его так и не получит.

Функция

networkDelayTime(times: integer-2d-array, n: integer, k: integer) → integer
timesinteger-2d-array
ориентированные рёбра, каждое в виде [u, v, w]
ninteger
количество узлов
kinteger
узел, который отправляет сигнал
Возвращаетinteger
время, когда последний узел получает сигнал, или -1

Ограничения

  • 2 ≤ n ≤ 3000
  • 1 ≤ times.length ≤ 4000
  • times[i].length = 3
  • 1 ≤ u, v ≤ n и u ≠ v
  • 0 ≤ w ≤ 100
  • Никакие две ссылки не имеют одновременно одинаковые u и v.
  • 1 ≤ k ≤ n

Примеры

Ввод
times = [[1, 2, 4], [1, 3, 1], [3, 2, 2], [2, 4, 1]]n = 4k = 1
Вывод
4
Пояснение
Сигнал по прямой связи достигает узла 2 за время 4, но по маршруту через узел 3 он приходит за 1 + 2 = 3. Узел 4 получает сигнал последним, через 3 + 1 = 4.
challenge icon

Дополнительный вопрос

Предположим, сигнал затухает, пройдя m связей. Как найти время, когда последний узел услышит его при этом ограничении?

Сбросить код
def networkDelayTime(times, n, k):
    # Напишите код здесь

Тест #1

Тест #2

Тест #3

Аргументы

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

Ожидаемый вывод

4