class Solution:
def updateMatrix(self, matrix: List[List[int]]) -> List[List[int]]:
stack=[]
cor=[[1,0],[0,1],[-1,0],[0,-1]]
for r in range(len(matrix)):
for c in range(len(matrix[0])):
if matrix[r][c]==0:
stack.append([r,c])
else:
matrix[r][c]=2**32
while stack:
index=stack.pop(0)
for c in cor:
r=index[0]+c[0]
cl=index[1]+c[1]
if r<0 or r>=len(matrix) or cl<0 or cl>=len(matrix[0]) or matrix[r][cl]<matrix[index[0]][index[1]]+1:
continue
matrix[r][cl]=matrix[index[0]][index[1]]+1
stack.append([r,cl])
return matrix