728x90
queue๋ฅผ ์ด์ฉํ bfs๋ฅผ ํ ๋ for๋ฌธ์ ์กฐ๊ฑด์ ๋ณํ์ง ์๋ ๊ฐ์ผ๋ก ๋จผ์ ํ ๋นํ๊ณ ์งํํ์.
์ฌ๊ธฐ์๋ int size = q.size(); ๋ก ๋จผ์ size๋ฅผ ๊ณ ์ ์ํค๊ณ for๋ฌธ์ ๋๋ ค์ผ ํ๋ค.
#include <iostream>
#include <vector>
#include <algorithm>
#include <queue>
using namespace std;
int arr[101][101][101];
int visited[101][101][101] = {0,};
int dim[6][3] = { {0,0,1}, {0,0,-1}, {0,1,0}, {0,-1,0}, {-1,0,0}, {1,0,0}};
int main() {
ios_base::sync_with_stdio(false); cin.tie(NULL);
int row = 0, col = 0, height =0;
queue<pair<pair<int,int>,int>> q;
cin >> col >> row >> height;
for(int h = 0 ; h < height ; h++) {
for(int i = 0 ; i < row ; i++) {
for(int j = 0 ; j < col ; j++) {
int num;
cin >> num;
if(num == 1) {
q.push({{i,j}, h});
}
arr[h][i][j] = num;
}
}
}
int count = 0;
while(!q.empty()) {
int size = q.size();
count++;
for(int j = 0 ; j < size ; j++) {
int d_row = q.front().first.first;
int d_col = q.front().first.second;
int d_height = q.front().second;
q.pop();
for(int i = 0 ; i < 6 ; i++) {
int n_row = d_row + dim[i][0];
int n_col = d_col + dim[i][1];
int n_height = d_height + dim[i][2];
if(n_row >= 0 && n_row < row && n_col >= 0 && n_col < col &&
n_height >= 0 && n_height < height && arr[n_height][n_row][n_col] == 0) {
arr[n_height][n_row][n_col] = 1;
q.push({{n_row,n_col}, n_height});
}
}
}
}
int none = 0;
for(int h = 0 ; h < height ; h++) {
for(int i = 0 ; i < row ; i++) {
for(int j = 0 ; j < col ; j++) {
if(arr[h][i][j] == 0)
none++;
}
}
}
if(none > 0) cout << "-1";
else cout << count-1;
return 0;
}
'๐ Self Study > ๐ BaekJoon' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
๋ฐฑ์ค BaekJoon (์คํํธ๋งํฌ, 5014๋ฒ) C++ (0) | 2022.01.11 |
---|---|
๋ฐฑ์ค BaekJoon (์จ๋ฐ๊ผญ์ง, 1697๋ฒ) C++ (0) | 2022.01.11 |
๋ฐฑ์ค BaekJoon(์ด์ ๊ณ์ฐ, 2644๋ฒ) C++ (0) | 2022.01.10 |
๋ฐฑ์ค BaekJoon (DFS์ BFS, 1260) C++ (0) | 2022.01.05 |
๋ฐฑ์ค BaekJoon (๋ฐ์ด๋ฌ์ค, 2606) C++ (0) | 2022.01.05 |