`from collections import deque
输出
rows, cols = map(int, input().split())
mat = [list(map(int, input())) for _ in range(rows)]
判断是否越界
def inside(r,c):
global rows,cols
if r<0 or c<0 or r>=rows or c>=cols:return False
return True
def main():
global rows,cols
#初始化距离数据和访问数据
dis=[]
for r in range(rows):dis.append([0 for i in range(cols)])
visit=[]
for r in range(rows):visit.append([False for i in range(cols)])
d = deque()
#cnt记录访问的次数,如果全部访问过就返回结果
cnt,total=0,rows*cols
#初始化为值为1的点,这些点的距离为0
for r in range(rows):
for c in range(cols):
if mat[r][c]:
d.append([r,c])
cnt+=1
visit[r][c]=True
#深度扩展
while d:
cur=d.popleft()
cr,cc=cur[0],cur[1]
around=[[cr+1,cc],[cr-1,cc],[cr,cc+1],[cr,cc-1]]
for nr,nc in around:
#如果不越界且没有访问过
if not inside(nr,nc):continue
if visit[nr][nc]:continue
# 访问次数+1,改变visit数组,当前点距离为其父节点距离+1
cnt+=1
d.append([nr,nc])
visit[nr][nc]=True
dis[nr][nc]=dis[cr][cc]+1
#退出条件
if cnt==total:return dis
return dis
dis=main()
print(dis)
`