1
# Runtime: 7285 ms (Top 5.13%) | Memory: 29.8 MB (Top 5.13%)2
from collections import defaultdict6
def hitBricks(self, grid: List[List[int]], hits: List[List[int]]) -> List[int]:8
sz = defaultdict(lambda: 1)13
parent[i] = find(parent[i])27
parent[(r, c)] = (r, c)28
parent[(row, col)] = (row, col)38
for dr, dc in [[-1, 0], [1, 0], [0, 1], [0, -1]]:39
if 0 <= r + dr < row and 0 <= c + dc < col and grid[r + dr][c + dc]:40
union((r, c), (r + dr, c + dc))42
union((r, c), (row, col))44
for i in range(len(hits) - 1, -1, -1):49
curbricks = sz[find((row, col))]50
for dr, dc in [[-1, 0], [1, 0], [0, 1], [0, -1]]:51
if 0 <= r + dr < row and 0 <= c + dc < col and grid[r + dr][c + dc]:52
union((r, c), (r + dr, c + dc))54
union((r, c), (row, col))55
nextbricks = sz[find((row, col))]56
if nextbricks > curbricks:57
res[i] = nextbricks - curbricks - 1