
import sys
from collections import deque
input = sys.stdin.readline
def BFS(table, start):
q = deque([start])
table[start[0]][start[1]] = 0
while q:
x, y = q.popleft()
dx = [-1,1,0,0]
dy = [0,0,-1,1]
# 상하좌우
for i in range(4):
nx = x + dx[i]
ny = y + dy[i]
if (0 <= nx < n) and (0 <= ny < m):
if table[nx][ny] == 1:
table[nx][ny] = str(int(table[x][y]) + 1)
q.append((nx, ny))
return table
# input
n, m = map(int, input().split())
table = [list(map(int, input().split())) for _ in range(n)]
# 시작 지점 찾기
for i in range(n):
for j in range(m):
if table[i][j] == 2:
start = (i, j)
# BFS
BFS(table, start)
# 예외처리
for i in range(n):
for j in range(m):
if table[i][j] == 0:
table[i][j] = "0"
if table[i][j] == 1:
table[i][j] = "-1"
print(" ".join(table[i]))
간단한 BFS 문제들은 이제 금방 푸는 것 같다.