leetcode题解记录-743 网络延迟时间(python3)

215 阅读1分钟

题目

743 网络延迟时间

题目链接

官方题解

解题思路: Dijkstra算法

代码记录

class Solution:
    def networkDelayTime(self, times: List[List[int]], n: int, k: int) -> int:
    	SEEN ={}
    	UNSEEN = {i+1:float('inf') for i in range(n)}
    	UNSEEN[k]=0
    	while len(SEEN)<n:
            cur_u = list(UNSEEN.items())
            cur_u.sort(key= lambda x:x[1])
            for i in range(len(cur_u)):
                if cur_u[i][0] not in SEEN:
                    SEEN[cur_u[i][0]]=cur_u[i][1]
                    for link in times:
                        ui,vi,wi = link
                        if ui==cur_u[i][0]:
                            UNSEEN[vi] = min(UNSEEN[vi],SEEN[cur_u[i][0]]+wi)
                    break
    	s = list(SEEN.items())
    	s.sort(key= lambda x:x[1],reverse=True)
    	res =s[0][1]  if s[0][1]!=float('inf') else -1
    	return res

参考资料

通俗易懂理解——dijkstra算法求最短路径

Dijkstra算法