← Graph Exploration

Micro-Drill #144 — Multi-source BFS (rotting oranges)

Graph Exploration Target: 15s

Initialize queue with all sources. BFS radiates outward in parallel from all starting points.

q = deque()
for i in range(R):
    for j in range(C):
        if grid[i][j] == 2: q.append((i, j, 0))
while q:
    i, j, t = q.popleft()
    for di, dj in ((1,0),(-1,0),(0,1),(0,-1)):
        ni, nj = i+di, j+dj
        if 0<=ni<R and 0<=nj<C and grid[ni][nj]==1:
            grid[ni][nj] = 2
            q.append((ni, nj, t+1))

Type it from memory. Go.

Practice Problems

Related Coding Drills

← Micro #143 Micro #145 →