题解 | 数水坑
数水坑
https://www.nowcoder.com/practice/664ca4289fcf457ba3109fdf4a7a1a05
import sys
from collections import deque
n,m=map(int,input().split())
map_matrix=[]
for _ in range(n):
map_matrix.append(input())
water_num=0
matrix=[['.']*(m) for _ in range(n)]
for i in range(n):
for j in range(m):
if map_matrix[i][j]=='W':
matrix[i][j]='W'
def dfs(i,j):
dfs_que=deque()
dfs_que.append((i,j))
while dfs_que:
x,y=dfs_que.popleft()
if y-1>=0 and matrix[x][y-1]=='W':
matrix[x][y-1]=water_num
dfs_que.append((x,y-1))
if y+1<=m-1 and matrix[x][y+1]=='W':
matrix[x][y+1]=water_num
dfs_que.append((x,y+1))
if x-1>=0:
if matrix[x-1][y]=='W':
matrix[x-1][y]=water_num
dfs_que.append((x-1,y))
if y-1>=0 and matrix[x-1][y-1]=='W':
matrix[x-1][y-1]=water_num
dfs_que.append((x-1,y-1))
if y+1<=m-1 and matrix[x-1][y+1]=='W':
matrix[x-1][y+1]=water_num
dfs_que.append((x-1,y+1))
if x+1<=n-1:
if matrix[x+1][y]=='W':
matrix[x+1][y]=water_num
dfs_que.append((x+1,y))
if y-1>=0 and matrix[x+1][y-1]=='W':
matrix[x+1][y-1]=water_num
dfs_que.append((x+1,y-1))
if y+1<=m-1 and matrix[x+1][y+1]=='W':
matrix[x+1][y+1]=water_num
dfs_que.append((x+1,y+1))
for i in range(n):
for j in range(m):
if matrix[i][j]=='W':
matrix[i][j]=water_num
dfs(i,j)
water_num+=1
print(water_num)
