from collections import deque
import sys
input = sys.stdin.readline
m,n=map(int,input().split())
arr=[]
for _ in range(n):
arr.append(list(map(int,input().split())))#토마토 있는 곳
que=deque()
dx=[1, -1, 0, 0]
dy=[0, 0, -1, 1]
day=0
for i in range(n):
for j in range(m):
if arr[i][j]==1:#토마토가 있다면
que.append((i,j))#해당 위치 큐에 추가
while que:
x,y=que.popleft()#갈 수 있는 곳의 좌표
for i in range(4):#상하좌우 탐색
nx=x+dx[i]
ny=y+dy[i]
if nx>=0 and nx<n and ny>=0 and ny<m and arr[nx][ny]==0:#익지않은 토마토+좌표 내
que.append((nx,ny))#덱큐에 추가하고
arr[nx][ny]=arr[x][y]+1#증가
for k in arr:
for kk in k:
if kk==0:
print(-1)#불가능한 상황
sys.exit(0)#더 둘러보지 않고 종료
day=max(day,max(k))#모든 토마토가 익음
print(day-1)
유사문제 2178번 미로 탐색
접근 방법
exit(0)
)