每日一道算法題--leetcode 743--網絡延遲時間--python

【題目描述】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])
        
複製代碼
相關文章
相關標籤/搜索