【題目描述】html
解讀題幹會發現,其實就是一道多點到多點的最短路徑問題,用floyd算法最合適,三層循環就搞定。依次加入中間節點,並更新距離矩陣。不瞭解floyd的小朋友能夠參考這篇:floyd詳解,時間複雜度比較高n的立方。算法
【源代碼】bash
class Solution:
def networkDelayTime(self, times, N, K):
arr=[[float('inf') for _ in range(N)]for _ in range(N)]
for t in times:
x=t[0]-1
y=t[1]-1
arr[x][y]=t[2]
for i in range(N):
arr[i][i]=0
for k in range(N):
for i in range(N):
for j in range(N):
if arr[i][j]>arr[i][k]+arr[k][j]:
arr[i][j]=arr[i][k]+arr[k][j]
if float('inf') in arr[K-1]:
return -1
return max(arr[K-1])
複製代碼