3차원 격자 상태 전파
H×M×N 크기의 3차원 격자에서, 각 칸의 상태는 익음(1), 안 익음(0), 빈 칸(-1)이다.
익은 칸은 매 시간 단위마다 상하좌우·앞뒤 6방향으로 인접한 안 익은 칸을 익힌다.
모든 안 익은 칸이 익는 데 필요한 최소 시간을 출력하라.
끝내 익지 못하는 칸이 있으면 -1을 출력한다.
입력 설명
첫 줄에는 격자의 가로 크기 M, 세로 크기 N, 층 수 H가 주어진다.
단, 2 ≤ M ≤ 100, 2 ≤ N ≤ 100, 1 ≤ H ≤ 100 이다.
둘째 줄부터는 아래층부터 위층 순서로 각 층의 상태가 주어진다. 각 층은 N줄로 이루어지며, 각 줄에는 M개의 정수가 주어진다.
정수 1은 익은 칸, 정수 0은 안 익은 칸, 정수 -1은 빈 칸을 나타낸다.
이러한 N개의 줄이 H번 반복된다.
안 익은 칸이 하나 이상 존재하는 경우만 입력으로 주어진다.
출력 설명
모든 안 익은 칸이 익는 데 필요한 최소 시간을 출력한다.
처음부터 모든 칸이 이미 익어있으면 0을 출력하고, 끝내 익지 못하는 칸이 남으면 -1을 출력한다.
예제 입력 1
5 3 1
0 -1 0 0 0
-1 -1 0 1 1
0 0 0 1 1
예제 출력 1
-1
예제 입력 2
5 3 2
0 0 0 0 0
0 0 0 0 0
0 0 0 0 0
0 0 0 0 0
0 0 1 0 0
0 0 0 0 0
예제 출력 2
4
예제 입력 3
4 3 2
1 1 1 1
1 1 1 1
1 1 1 1
1 1 1 1
-1 -1 -1 -1
1 1 1 -1
예제 출력 3
0