← Graph Exploration

Micro-Drill #236 — Network delay time (Dijkstra)

Graph Exploration Target: 15s

Dijkstra from source k. Answer is max distance (time for signal to reach farthest node). -1 if not all reachable.

import heapq
from collections import defaultdict

def networkDelayTime(times, n, k):
    graph = defaultdict(list)
    for u, v, w in times:
        graph[u].append((v, w))
    dist = {k: 0}
    heap = [(0, k)]
    while heap:
        d, u = heapq.heappop(heap)
        if d > dist.get(u, float('inf')): continue
        for v, w in graph[u]:
            nd = d + w
            if nd < dist.get(v, float('inf')):
                dist[v] = nd
                heapq.heappush(heap, (nd, v))
    return max(dist.values()) if len(dist) == n else -1

Type it from memory. Go.

Practice Problems

Related Coding Drills

← Micro #235 Micro #237 →