def dfs(grid, i, j, x, y, visit):
if i < 0 or j < 0 or i >= x or j >= y:
return
visit[i][j] = 0
grid[i][j] = '*'
for dx, dy in [(0, 1), (0, -1), (1, 0), (-1, 0)]:
nx, ny = i + dx, j + dy
if 0 <= nx < x and 0 <= ny < y and grid[nx][ny] == '0' and not visit[nx][ny]:
dfs(grid, nx, ny, x, y, visit)
def countArea(grid, x, y):
count = 0
for i in range(x):
for j in range(y):
if(grid[i][j] == '0'):
count += 1
return count
x, y = map(int, input().split())
grid = [list(input()) for _ in range(x)]
for row in grid:
row.insert(0, '0')
row.append('0')
grid.insert(0, ['0'] * (y + 2))
grid.append(['0'] * (y + 2))
visit = [[0 for _ in range(y + 2)] for _ in range(x + 2)]
dfs(grid, 0, 0, x + 2, y + 2, visit)
dfs(grid, 0, y + 1, x + 2, y + 2, visit)
dfs(grid, x + 1, 0, x + 2, y + 2, visit)
dfs(grid, x + 1, y + 1, x + 2, y + 2, visit)
print(countArea(grid, x, y))
自己测的数据是对的啊,不懂