C++
#include <cstdio>
#include <iostream>
#include <queue>
using namespace std;
int data[100][100][100]; // [z][y][x] (x, y, z)
int dx[6]={-1, 1, 0, 0, 0, 0};
int dy[6]={0, 0, -1, 1, 0, 0};
int dz[6]={0, 0, 0, 0, -1, 1};
int m,n,h;
struct Pos
{
int x, y, z;
};
int is_safe(int x,int y,int z){
return (x<0||y<0||z<0||x>=m||y>=n||z>=h)? 0: 1;
}
//Pos p = { 0, 1, 2 };
queue<Pos> q;
int main()
{
scanf("%d %d %d", &m, &n, &h);
int total=m*n*h;
int x,y,z;
for(z=0;z<h;z++)
{
for(y=0;y<n;y++)
{
for(x=0;x<m;x++)
{
scanf("%d", &data[z][y][x]);
if( data[z][y][x] == 1 )
q.push( {x, y, z} );
else if (data[z][y][x] == -1)
total--;
}
}
}
int day=0,cnt=0;
while ( !q.empty () )
{
size_t s= q.size();
cnt+=s;
for(size_t i=0;i<s;++i)
{
Pos p = q.front();
q.pop();
for(int j=0;j<6;++j)
{
int adj_x=p.x+dx[j];
int adj_y=p.y+dy[j];
int adj_z=p.z+dz[j];
if(!is_safe(adj_x,adj_y,adj_z))
continue;
if(data[adj_z][adj_y][adj_x]==0){
data[adj_z][adj_y][adj_x]=1;
q.push({adj_x,adj_y,adj_z});
}
}
}
if(!q.empty())
day++;
}
if ( cnt < total )
printf("-1");
else
printf("%d\n", day);
return 0;
}
댓글 0
번호 | 제목 | 글쓴이 | 날짜 | 조회 수 |
---|---|---|---|---|
공지 | 안내사항 | 관리자 | 2019.12.21 | 163 |
74 | 9663 | 관리자 | 2019.12.21 | 114 |
73 | 9345 | 관리자 | 2020.04.11 | 150 |
72 | 9019 | 관리자 | 2019.12.21 | 113 |
» | 7569 | 관리자 | 2019.12.21 | 113 |
70 | 6987 | 관리자 | 2019.12.21 | 113 |
69 | 5842 | 관리자 | 2020.04.11 | 151 |
68 | 5625 | 관리자 | 2019.12.21 | 109 |
67 | 5419 | 관리자 | 2020.04.11 | 155 |
66 | 3392 | 관리자 | 2020.04.11 | 156 |
65 | 3019 | 관리자 | 2019.12.21 | 111 |
64 | 2933 | 관리자 | 2019.12.21 | 112 |
63 | 2931 | 관리자 | 2019.12.21 | 111 |
62 | 2836 | 관리자 | 2019.12.21 | 110 |
61 | 2667 | 관리자 | 2019.12.21 | 113 |
60 | 2636 | 관리자 | 2019.12.21 | 113 |
59 | 2629 | 관리자 | 2020.04.11 | 146 |
58 | 2615 | 관리자 | 2019.12.21 | 111 |
57 | 2610 | 관리자 | 2020.04.11 | 146 |
56 | 2606 | 관리자 | 2019.12.21 | 111 |
55 | 2585 | 관리자 | 2019.12.21 | 113 |
54 | 2578 | 관리자 | 2019.12.21 | 111 |
53 | 2573 | 관리자 | 2020.04.11 | 151 |
52 | 2557 | 관리자 | 2019.12.21 | 111 |
51 | 2512 | 관리자 | 2019.12.21 | 111 |
50 | 2504 | 관리자 | 2020.04.11 | 147 |
49 | 2481 | 관리자 | 2019.12.21 | 112 |
48 | 2478 | 관리자 | 2020.04.11 | 148 |
47 | 2473 | 관리자 | 2020.04.11 | 153 |
46 | 2470 | 관리자 | 2020.04.11 | 151 |