Menu
CoddyTech

Network Delay Time

네트워크에는 1부터 n까지 레이블이 지정된 n개의 노드가 있습니다. 링크 times[i] = [u, v, w]는 신호를 노드 u에서 노드 v로 w 시간 단위 동안 전달하며, 이 방향으로만 전달합니다.

시간 0에 노드 k에서 신호가 출발하여 이동할 수 있는 모든 링크를 따라 이동합니다. 마지막 노드가 신호를 받는 시간을 반환하고, 신호를 받지 못하는 노드가 있으면 -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
설명
직접 연결 경로는 시간 4에 노드 2에 도달하지만, 노드 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