1def walls_and_gates(rooms):
2 q = []
3
4 for r in range(len(rooms)):
5 for c in range(len(rooms[0])):
6 if rooms[r][c] == 0:
7 q.append((r, c))
8
9 while q:
10 r, c = q.pop(0)
11 for dr, dc in [(1, 0), (-1, 0), (0, 1), (0, -1)]:
12 nr, nc = r + dr, c + dc
13 if 0 <= nr < len(rooms) and 0 <= nc < len(rooms[0]) and rooms[nr][nc] == 2147483647:
14 rooms[nr][nc] = rooms[r][c] + 1
15 q.append((nr, nc))