题目
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