Menu
CoddyTech

Network Delay Time

ネットワークにはn個のノードがあり、1からnまでの番号が付いています。そのリンクはリストtimesとして与えられ、times[i] = [u, v, w]は、ノードuから送信された信号がw単位時間後にノードvに到達することを意味します。リンクは一方向にのみ機能します。

時刻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
説明
ノード 3 は時刻 1 に信号を受信します。ノード 2 は直接リンク経由では時刻 4 に受信できますが、ノード 3 を経由する経路では 1 + 2 = 3 に到着し、ノード 4 は 3 + 1 = 4 に受信します。最後に受信するのはノード 4 で、時刻 4 です。

lock icon提出時に隠しテスト+16件

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