Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- 3343
- graph #최단경로
- 1174
- 쌤쌤쌤
- LIS #가장긴증가하는부분수열 #
- 22869
- 줄어드는수
- graph
- 사이클 없는 그래프
- 3D #Reconstruction #computer #vision #volume #metric #tsdf #kinect #fusion
- hcpc
- boj #백준
- 30870
- 코딩
- 16202
- C++
- 20117
- N번째큰수
- 백준
- BOJ
- 진법변환 #2to10 #10to2 #이진법 #십진법 #변환 #bitset #c++
- 최소 #공배수 #최대 #공약수 #유클리드 #호제법 #lcm #gcd #c++ #boj #3343 #백준 #장미
- 백준 #다익스트라 #dijkstra #9370 #c++
- 레드아보
- c++ #boj #
- 투포인터 #백준 #boj #20922 #22862
- c++ #입출력 #속도 #ios #sync_with_stdio #cin #cout #tie
- 이분탐색 #dp #11053
- 호반우 상인
- backtracking #codetree #디버깅 #삼성코테
Archives
- Today
- Total
hyunjin
[C++][토마토 BOJ7569] BFS 본문
728x90
이번엔 3차원
2차원 토마토에서 축 하나 더 생긴거라 비슷하게 가면 된다.
소스코드
#include <bits/stdc++.h>
using namespace std;
int box[101][101][101]={0,};
int h,n,m;
int ans=0;
struct pos{
int x,y,z;
};
queue<pos> q;
int dz[6]={-1,1,0,0,0,0},dy[6]={0,0,0,0,1,-1},dx[6]={0,0,1,-1,0,0};
void Input(){
cin >>m >> n >> h;
for(int i = 0 ; i < h;i++){
for(int j = 0 ; j < n;j++){
for(int k = 0 ; k < m;k++){
cin >> box[i][j][k];
if(box[i][j][k]==0) numOfNotRipe++;
else if(box[i][j][k]==1){
q.push({i,j,k});
}
}
}
}
}
void Solution(){
while (!q.empty()) {
int x = q.front().x, y = q.front().y, z = q.front().z;
q.pop();
for (int i=0; i<6; i++) {
int nx = x + dx[i], ny = y + dy[i], nz = z + dz[i];
if (nx < 0 || nx >= h || ny < 0 || ny >= n || nz < 0 || nz >= m) continue;
if (box[nx][ny][nz]) continue; // Ripened(1 or above), empty(-1)
box[nx][ny][nz] = box[x][y][z] + 1; // Day count
q.push({nx, ny, nz});
}
}
for(int i = 0 ; i < h;i++){
for(int j = 0 ; j < n;j++){
for(int k = 0 ; k < m;k++){
if(box[i][j][k]==0) {
cout<<"-1";
return;
}
if (ans < box[i][j][k]) ans = box[i][j][k];
}
}
}
cout<< ans-1;
//numOfNotRipe ==0 ? cout<< ans : cout<< "-1";
}
void Slove(){
Input();
Solution();
}
int main(){
ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);
Slove();
}
728x90
'알고리즘 연습 > 백준' 카테고리의 다른 글
[C++][좌표 압축 18870] 정렬, 벡터 복사, 중복 제거 ,lower_bound (0) | 2021.09.02 |
---|---|
[C++][BOJ2582 보물섬] BFS (0) | 2021.08.03 |
[C++][BOJ 12886 돌그룹] (0) | 2021.07.27 |
[C++][BOJ 11000 강의실 배정]그리디,정렬,우선순위큐 (0) | 2021.07.26 |
[C++][BOJ 1080 행렬] 그리디 (0) | 2021.07.25 |