gumgum's Garden🌼

Network delay time

def networkDelayTime(self, times: List[List[int]], n: int, k: int) -> int:
    adj = [[] for i in range(n)]
    for node in times:
        u, v, w = node
        adj[u - 1].append((w, v - 1))
    
    dist = [1e9 for i in range(n)]
    dist[k - 1] = 0
    minheap = [(0, k - 1)]
    
    while minheap:  
        w1, u = heappop(minheap)
        for node in adj[u]:
            w2, v = node 
            if dist[v] > dist[u] + w2: 
                dist[v] = dist[u] + w2   
                heappush(minheap, (dist[v], v))
    
    ans = max(dist)
    return ans if ans is not 1e9 else -1