https://www.acmicpc.net/problem/7569
λ¬Έμ
μ² μμ ν λ§ν λμ₯μμλ ν λ§ν λ₯Ό 보κ΄νλ ν° μ°½κ³ λ₯Ό κ°μ§κ³ μλ€. ν λ§ν λ μλμ κ·Έλ¦Όκ³Ό κ°μ΄ 격μλͺ¨μ μμμ μΉΈμ νλμ© λ£μ λ€μ, μμλ€μ μμ§μΌλ‘ μμ μ¬λ €μ μ°½κ³ μ 보κ΄νλ€.
μ°½κ³ μ 보κ΄λλ ν λ§ν λ€ μ€μλ μ μ΅μ κ²λ μμ§λ§, μμ§ μ΅μ§ μμ ν λ§ν λ€λ μμ μ μλ€. λ³΄κ΄ ν νλ£¨κ° μ§λλ©΄, μ΅μ ν λ§ν λ€μ μΈμ ν κ³³μ μλ μ΅μ§ μμ ν λ§ν λ€μ μ΅μ ν λ§ν μ μν₯μ λ°μ μ΅κ² λλ€. νλμ ν λ§ν μ μΈμ ν κ³³μ μ, μλ, μΌμͺ½, μ€λ₯Έμͺ½, μ, λ€ μ¬μ― λ°©ν₯μ μλ ν λ§ν λ₯Ό μλ―Ένλ€. λκ°μ λ°©ν₯μ μλ ν λ§ν λ€μκ²λ μν₯μ μ£Όμ§ λͺ»νλ©°, ν λ§ν κ° νΌμ μ μ λ‘ μ΅λ κ²½μ°λ μλ€κ³ κ°μ νλ€. μ² μλ μ°½κ³ μ 보κ΄λ ν λ§ν λ€μ΄ λ©°μΉ μ΄ μ§λλ©΄ λ€ μ΅κ² λλμ§ κ·Έ μ΅μ μΌμλ₯Ό μκ³ μΆμ΄ νλ€.
ν λ§ν λ₯Ό μ°½κ³ μ 보κ΄νλ 격μλͺ¨μμ μμλ€μ ν¬κΈ°μ μ΅μ ν λ§ν λ€κ³Ό μ΅μ§ μμ ν λ§ν λ€μ μ λ³΄κ° μ£Όμ΄μ‘μ λ, λ©°μΉ μ΄ μ§λλ©΄ ν λ§ν λ€μ΄ λͺ¨λ μ΅λμ§, κ·Έ μ΅μ μΌμλ₯Ό ꡬνλ νλ‘κ·Έλ¨μ μμ±νλΌ. λ¨, μμμ μΌλΆ μΉΈμλ ν λ§ν κ° λ€μ΄μμ§ μμ μλ μλ€.
μ λ ₯
첫 μ€μλ μμμ ν¬κΈ°λ₯Ό λνλ΄λ λ μ μ M,Nκ³Ό μμμ¬λ €μ§λ μμμ μλ₯Ό λνλ΄λ Hκ° μ£Όμ΄μ§λ€. Mμ μμμ κ°λ‘ μΉΈμ μ, Nμ μμμ μΈλ‘ μΉΈμ μλ₯Ό λνλΈλ€. λ¨, 2 ≤ M ≤ 100, 2 ≤ N ≤ 100, 1 ≤ H ≤ 100 μ΄λ€. λμ§Έ μ€λΆν°λ κ°μ₯ λ°μ μμλΆν° κ°μ₯ μμ μμκΉμ§μ μ μ₯λ ν λ§ν λ€μ μ λ³΄κ° μ£Όμ΄μ§λ€. μ¦, λμ§Έ μ€λΆν° Nκ°μ μ€μλ νλμ μμμ λ΄κΈ΄ ν λ§ν μ μ λ³΄κ° μ£Όμ΄μ§λ€. κ° μ€μλ μμ κ°λ‘μ€μ λ€μ΄μλ ν λ§ν λ€μ μνκ° Mκ°μ μ μλ‘ μ£Όμ΄μ§λ€. μ μ 1μ μ΅μ ν λ§ν , μ μ 0 μ μ΅μ§ μμ ν λ§ν , μ μ -1μ ν λ§ν κ° λ€μ΄μμ§ μμ μΉΈμ λνλΈλ€. μ΄λ¬ν Nκ°μ μ€μ΄ Hλ² λ°λ³΅νμ¬ μ£Όμ΄μ§λ€.
ν λ§ν κ° νλ μ΄μ μλ κ²½μ°λ§ μ λ ₯μΌλ‘ μ£Όμ΄μ§λ€.
μΆλ ₯
μ¬λ¬λΆμ ν λ§ν κ° λͺ¨λ μ΅μ λκΉμ§ μ΅μ λ©°μΉ μ΄ κ±Έλ¦¬λμ§λ₯Ό κ³μ°ν΄μ μΆλ ₯ν΄μΌ νλ€. λ§μ½, μ μ₯λ λλΆν° λͺ¨λ ν λ§ν κ° μ΅μ΄μλ μνμ΄λ©΄ 0μ μΆλ ₯ν΄μΌ νκ³ , ν λ§ν κ° λͺ¨λ μ΅μ§λ λͺ»νλ μν©μ΄λ©΄ -1μ μΆλ ₯ν΄μΌ νλ€.
νμ΄
[π Baaaaaarking/0x09κ° - BFS] - [BOJ G5][C++] λ°±μ€ 7576λ²: ν λ§ν
μ 7576λ² ν λ§ν μ μ κ·Έλ μ΄λ λ²μ
2μ°¨μ BFS λ¬Έμ λ₯Ό 3μ°¨μμΌλ‘ λ°κΎΌ ννλ€
κ·Όλ° ν°μ΄λ κ°μ (G5)
μΌμ°¨μ λ°°μ΄.. μμ§ν λ¨Έλ¦¬λ‘ μ΄ν΄νλ건 μ΄λ ΅μ§λ§
κ·Έλ₯ BFS λ₯Ό 3μΉΈμ§λ¦¬ λ°°μ΄λ‘ νλ€κ³ μκ°νλ©΄ μ’ νΈνλ€
λ€λ§ dz λ₯Ό μΆκ°ν΄μ μμΈ΅ μλμΈ΅μΌλ‘ μ΅λκ² λ²μ§(?) μ μκ² μ€μ ν΄μ£Όκ³ ,
pair λμ tuple μ μ¬μ©νμ¬ νμ μ’ν μΈκ°λ₯Ό λ£μ΄μ€¬λ€
μ΄μ―€μμ μμ보λ
νμ΄μ νν - C++ νΈ
pair μ¬μ©λ²
pair<int, int, int> p = {x, y};
// x = p.first
// y = p.second
tuple μ¬μ©λ²
tuple<int, int, int> t = {x, y, z};
int a, b, c;
tie(a, b, c) = t
// a = x, b = y, c = z
μ½λ
// Authored by : seondal
// νμ΄ : https://whkakrkr.tistory.com/
// Co-authored by : -
#include <bits/stdc++.h>
//#include <iostream>
//#include <queue>
using namespace std;
int board[101][101][101];
int dis[101][101][101];
int dx[6] = {1,0,-1,0,0,0};
int dy[6] = {0,1,0,-1,0,0};
int dz[6] = {0,0,0,0,1,-1};
int main() {
ios::sync_with_stdio(0);
cin.tie(0);
queue<tuple<int, int, int>> q;
// μ
λ ₯
int m, n, h;
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 >> board[i][j][k];
if(board[i][j][k] == 0) dis[i][j][k] = -1;
if(board[i][j][k] == 1) q.push({i,j,k});
}
}
}
// κ³μ°
while(!q.empty()){
tuple<int, int, int> current = q.front();
q.pop();
int cx, cy, cz;
tie(cz, cy, cx) = current;
for(int dir=0; dir<6; dir++) {
int z = cz + dz[dir];
int y = cy + dy[dir];
int x = cx + dx[dir];
if(z<0 || z>=h || y<0 || y>=n || x<0 || x>=m) continue;
if(dis[z][y][x] >= 0) continue;
dis[z][y][x] = dis[cz][cy][cx] + 1;
q.push({z,y,x});
}
}
// μΆλ ₯
int ans=0;
for(int i=0; i<h; i++){
for(int j=0; j<n; j++){
for(int k=0; k<m; k++){
if(dis[i][j][k] == -1){
cout << -1 << "\n";
return 0;
}
if(dis[i][j][k] > ans) ans = dis[i][j][k];
}
}
}
cout << ans << "\n";
return 0;
}
/*
*/
λ€λ§ μμΈμ§ #include <iostream> κ³Ό #include <queue> λ₯Ό νλλ
xcode IDE μμλ μ λλλ° BOJμμλ μ»΄νμΌμλ¬κ° λ¬λ€γ γ
tuple λλ¬ΈμΈ κ² κ°κΈ΄νλ° μμΈμ§λ₯Ό λͺ¨λ₯΄κ² λ€...
μ°μ κΈνλλ‘ #inlcude <bits/stdc++.h> λ₯Ό λ£μ΄ ν΄κ²°
'π Baaaaaarking > 0x09κ° - BFS' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[BOJ G4][C++] λ°±μ€ 4179λ²: λΆ! (0) | 2022.03.16 |
---|---|
[BOJ S2][C++] λ°±μ€ 7562λ²: λμ΄νΈμ μ΄λ (0) | 2022.03.15 |
[BOJ G5][C++] λ°±μ€ 7576λ²: ν λ§ν (0) | 2022.03.09 |
[BOJ G5][C++] λ°±μ€ 10026λ²: μ λ‘μμ½ (0) | 2022.03.08 |
[BOJ S1][C++] λ°±μ€ 2178λ² : λ―Έλ‘ νμ (0) | 2022.03.08 |