Skip to content

Latest commit

 

History

History
41 lines (39 loc) · 1.16 KB

743.md

File metadata and controls

41 lines (39 loc) · 1.16 KB

743. Network Delay Time

Solution 1 (time O(n^2), space O(n^2))

# Dijkstra
class Solution(object):
    def networkDelayTime(self, times, n, k):
        """
        :type times: List[List[int]]
        :type n: int
        :type k: int
        :rtype: int
        """
        g = [[float("inf") for _ in range(n)] for _ in range(n)]
        for u, v, w in times:
            g[u - 1][v - 1] = w
        for i in range(n):
            g[i][i] = 0
        dist = [g[k - 1][i] for i in range(n)]
        vis = [False for _ in range(n)]
        vis[k - 1] = True
        for _ in range(n - 1):
            min_dist = float("inf")
            new_node = -1
            for i in range(n):
                if vis[i]:
                    continue
                if dist[i] < min_dist:
                    min_dist = dist[i]
                    new_node = i
            if new_node == -1:
                break
            vis[new_node] = True
            for i in range(n):
                if vis[i]:
                    continue
                dist[i] = min(dist[i], dist[new_node] + g[new_node][i])
        ans = max(dist)
        return -1 if ans == float("inf") else ans