AcWing 3083. 矩阵距离
原题链接
简单
Python 代码
from collections import deque
dx=[0,0,1,-1]
dy=[1,-1,0,0]
def check(x,y):
return True if 0<=x<=n-1 and 0<=y<=m-1 and st[x][y]==False else False
def bfs():
for i in range(n):
for j in range(m):
if g[i][j]==1:
q.append((i,j))
st[i][j]=True
g[i][j]-=1
while(len(q)):
t=q.popleft()
for i in range(4):
x=t[0]+dx[i]
y=t[1]+dy[i]
if check(x,y):
g[x][y]=g[t[0]][t[1]]+1
st[x][y]=True
q.append((x,y))
n,m=map(int,input().split())
g=[]
for i in range(0,n):
g.append(list(map(int,input())))
#print(g)
q=deque() #队列
st=[[False for _ in range(m)] for _ in range(n)] #踩踏状态
#print(st)
bfs()
for i in range(0,n):
#print(g[i])
#print(list(map(str,g[i])))
print(' '.join(map(str,g[i])))