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