-
题目链接 https://leetcode-cn.com/problems/network-delay-time/submissions/
-
题目描述
-
有
N
个网络节点,标记为1
到N
。给定一个列表
times
,表示信号经过有向边的传递时间。times[i] = (u, v, w)
,其中u
是源节点,v
是目标节点,w
是一个信号从源节点传递到目标节点的时间。现在,我们向当前的节点
K
发送了一个信号。需要多久才能使所有节点都收到信号?如果不能使所有节点收到信号,返回-1
。 -
输入:[[2,1,1],[2,3,1],[3,4,1]],4,2 输出:2
-
-
解题思路
- 典型的Dijkstra算法
-
代码
- python
class Solution: def networkDelayTime(self, times, N, K): weight = [[float("inf")] * (N) for _ in range(N)] for u, v, w in times: weight[u-1][v-1] = w K -= 1 distance = [float("inf")] * N vis = [0] * N distance[K] = 0 print(distance) for _ in range(N): min_index = min([i for i in range(N)], key=lambda a: distance[a] if vis[a] == 0 else float("inf")) vis[min_index] = 1 for i in range(N): if vis[i] == 0: distance[i] = min(distance[i], distance[min_index] + weight[min_index][i]) _max = max(distance) return _max if _max != float('inf') else -1
- python
leetcode743. 网络延迟时间
猜你喜欢
转载自blog.csdn.net/qq_38043440/article/details/89081135
今日推荐
周排行