Menu
CoddyTech

Network Delay Time

一个网络有 n 个节点,编号从 1 到 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