Newer
Older
import sys
from collections import deque
input = sys.stdin.readline
queue = deque()
cnt = 0
dx, dy, dz = [-1, 1, 0, 0, 0, 0], [0, 0, -1, 1, 0, 0], [0, 0, 0, 0, -1, 1]
M, N, H = map(int, input().split())
graph = [[[*map(int, input().split())] for _ in range(N)] for _ in range(H)]
def bfs():
while queue:
z, x, y = queue.popleft()
for i in range(6):
nx, ny, nz = x+dx[i], y+dy[i], z+dz[i]
if -1 < nx < N and -1 < ny < M and -1 < nz < H and graph[nz][nx][ny] == 0:
graph[nz][nx][ny] = graph[z][x][y] + 1
queue.append((nz, nx, ny))
for i in range(H):
for j in range(N):
for k in range(M):
if graph[i][j][k] == 1:
queue.append((i, j, k))
bfs()
for i in graph:
for j in i:
for k in j:
if k == 0:
print(-1)
exit(0)
cnt = max(cnt, k)
print(cnt-1)