#include
int queue[10000000][3];
int arr[101][101][101]={};
int front=0,rear=0,days = 0,m,n,h;
void deq()
{
int num = rear-1;
for(int i = front; i <= num; i++)
{
//여기여기여기여기여기여기여기있던코드삭제!!!!!!
enq(queue[i][0] + 1, queue[i][1], queue[i][2]);
enq(queue[i][0] - 1, queue[i][1], queue[i][2]);
enq(queue[i][0], queue[i][1] + 1, queue[i][2]);
enq(queue[i][0], queue[i][1] - 1, queue[i][2]);
enq(queue[i][0], queue[i][1], queue[i][2] + 1);
enq(queue[i][0], queue[i][1], queue[i][2] - 1);
front++;
}
}
void enq(int i,int j, int k)
{
if(i < h && i >= 0 && j < n && j >= 0 && k < m && k >=0 && arr[i][j][k] == 0)
{
queue[rear][0] = i;
queue[rear][1] = j;
queue[rear++][2] = k;
arr[i][j][k]=1; //여기여기여기여기여기여기여기다가 추가!!!
}
}
int main()
{
scanf("%d %d %d",&m,&n,&h);
for(int i = 0; i < h; i++)
{
for(int j = 0; j < n; j++)
{
for(int k = 0; k < m; k++)
{
scanf("%d",&arr[i][j][k]);
if(arr[i][j][k] == 1)
{
queue[rear][0] = i;
queue[rear][1] = j;
queue[rear++][2] = k;
}
}
}
}
while(rear!=front)
{
days++;
deq();
}
for(int i = 0; i < h; i++)
{
for(int j = 0; j < n; j++)
{
for(int k = 0; k < m; k++)
{
if(arr[i][j][k] == 0)
{
printf("-1");
return 0;
}
}
}
}
printf("%d",days-1);
return;
}
deq하면서 arr[i][j][k]를 1로 만들지 마시고
enq하면서 arr[i][j][k]를 1로 만드시면 정확한풀이가 뜹니다!!!!!!