π»
[λ°±μ€] DFSBFS - 7576. ν λ§ν λ³Έλ¬Έ
λ¬Έμ
μ² μμ ν λ§ν λμ₯μμλ ν λ§ν λ₯Ό 보κ΄νλ ν° μ°½κ³ λ₯Ό κ°μ§κ³ μλ€. ν λ§ν λ μλμ κ·Έλ¦Όκ³Ό κ°μ΄ 격μ λͺ¨μ μμμ μΉΈμ νλμ© λ£μ΄μ μ°½κ³ μ 보κ΄νλ€.
μ°½κ³ μ 보κ΄λλ ν λ§ν λ€ μ€μλ μ μ΅μ κ²λ μμ§λ§, μμ§ μ΅μ§ μμ ν λ§ν λ€λ μμ μ μλ€. λ³΄κ΄ ν νλ£¨κ° μ§λλ©΄, μ΅μ ν λ§ν λ€μ μΈμ ν κ³³μ μλ μ΅μ§ μμ ν λ§ν λ€μ μ΅μ ν λ§ν μ μν₯μ λ°μ μ΅κ² λλ€. νλμ ν λ§ν μ μΈμ ν κ³³μ μΌμͺ½, μ€λ₯Έμͺ½, μ, λ€ λ€ λ°©ν₯μ μλ ν λ§ν λ₯Ό μλ―Ένλ€. λκ°μ λ°©ν₯μ μλ ν λ§ν λ€μκ²λ μν₯μ μ£Όμ§ λͺ»νλ©°, ν λ§ν κ° νΌμ μ μ λ‘ μ΅λ κ²½μ°λ μλ€κ³ κ°μ νλ€. μ² μλ μ°½κ³ μ 보κ΄λ ν λ§ν λ€μ΄ λ©°μΉ μ΄ μ§λλ©΄ λ€ μ΅κ² λλμ§, κ·Έ μ΅μ μΌμλ₯Ό μκ³ μΆμ΄ νλ€.
ν λ§ν λ₯Ό μ°½κ³ μ 보κ΄νλ 격μλͺ¨μμ μμλ€μ ν¬κΈ°μ μ΅μ ν λ§ν λ€κ³Ό μ΅μ§ μμ ν λ§ν λ€μ μ λ³΄κ° μ£Όμ΄μ‘μ λ, λ©°μΉ μ΄ μ§λλ©΄ ν λ§ν λ€μ΄ λͺ¨λ μ΅λμ§, κ·Έ μ΅μ μΌμλ₯Ό ꡬνλ νλ‘κ·Έλ¨μ μμ±νλΌ. λ¨, μμμ μΌλΆ μΉΈμλ ν λ§ν κ° λ€μ΄μμ§ μμ μλ μλ€.
μ λ ₯
첫 μ€μλ μμμ ν¬κΈ°λ₯Ό λνλ΄λ λ μ μ M,Nμ΄ μ£Όμ΄μ§λ€. Mμ μμμ κ°λ‘ μΉΈμ μ, Nμ μμμ μΈλ‘ μΉΈμ μλ₯Ό λνλΈλ€. λ¨, 2 ≤ M,N ≤ 1,000 μ΄λ€. λμ§Έ μ€λΆν°λ νλμ μμμ μ μ₯λ ν λ§ν λ€μ μ λ³΄κ° μ£Όμ΄μ§λ€. μ¦, λμ§Έ μ€λΆν° Nκ°μ μ€μλ μμμ λ΄κΈ΄ ν λ§ν μ μ λ³΄κ° μ£Όμ΄μ§λ€. νλμ μ€μλ μμ κ°λ‘μ€μ λ€μ΄μλ ν λ§ν μ μνκ° Mκ°μ μ μλ‘ μ£Όμ΄μ§λ€. μ μ 1μ μ΅μ ν λ§ν , μ μ 0μ μ΅μ§ μμ ν λ§ν , μ μ -1μ ν λ§ν κ° λ€μ΄μμ§ μμ μΉΈμ λνλΈλ€.
μΆλ ₯
μ¬λ¬λΆμ ν λ§ν κ° λͺ¨λ μ΅μ λκΉμ§μ μ΅μ λ μ§λ₯Ό μΆλ ₯ν΄μΌ νλ€. λ§μ½, μ μ₯λ λλΆν° λͺ¨λ ν λ§ν κ° μ΅μ΄μλ μνμ΄λ©΄ 0μ μΆλ ₯ν΄μΌ νκ³ , ν λ§ν κ° λͺ¨λ μ΅μ§λ λͺ»νλ μν©μ΄λ©΄ -1μ μΆλ ₯ν΄μΌ νλ€.
μμ μ λ ₯ 1
6 4
0 0 0 0 0 0
0 0 0 0 0 0
0 0 0 0 0 0
0 0 0 0 0 1
μμ μΆλ ₯ 1
8
μμ μ λ ₯ 2
6 4
0 -1 0 0 0 0
-1 0 0 0 0 0
0 0 0 0 0 0
0 0 0 0 0 1
μμ μΆλ ₯ 2
-1
μμ μ λ ₯ 3
6 4
1 -1 0 0 0 0
0 -1 0 0 0 0
0 0 0 0 -1 0
0 0 0 0 -1 1
μμ μΆλ ₯ 3
6
μμ μ λ ₯ 4
5 5
-1 1 0 0 0
0 -1 -1 -1 0
0 -1 -1 -1 0
0 -1 -1 -1 0
0 0 0 0 0
μμ μΆλ ₯ 4
14
μμ μ λ ₯ 5
2 2
1 -1
-1 1
μμ μΆλ ₯ 5
0
μκ°
- ν λ§ν κ° λͺμΌλ§μ μ΅λ λ° μΌλ§λ 걸리λ μ§ κ΅¬νλ λ¬Έμ μλ€.
- μ΅μ ν λ§ν (1)μ μ,ν,μ’,μ°κ° μμμ λ²μλ₯Ό λ²μ΄λμ§ μμΌλ©΄μ, μμ΅μμν(0)μ΄λ©΄ μ΅μ μνλ‘ λ°κΎΈμ΄μ€λ€.
- μ΄λ μμ΅μμνμ ν λ§ν λ₯Ό μ΅μμνκ°(1)λ‘ λ°κΎΈλ κ²μ΄ μλλΌ, μ΅μμν ν λ§ν κ° + 1 λ‘ νμ¬ ν λ§ν λ₯Ό μ΅νκ°λ©΄μ λ μ§λ₯Ό μΌλ€.
- bfsλ₯Ό μ΄μ©νμ¬ νλ₯Ό μ¬μ©ν΄ μ λ ₯λ°μΌλ©΄μ μ΅μ ν λ§ν λ₯Ό νμ λ£μ΄μ£Όμλ€.
- 맨 μ²μμ λͺ¨λ ν λ§ν κ° μ΅μ μν μΌ κ²½μ° μμ΅μ ν λ§ν (0)μ΄ μμΌλ―λ‘ dayμ μ΄κΈ°κ°μΈ 0μ΄ μΆλ ₯λλ€.
- λͺ¨λ μ΅μ§ λͺ»νλ μν©μ κ²½μ°(μμ 2λ²κ³Ό κ°μ μΌμ΄μ€) μμ΅μ ν λ§ν (0)κ° μμΌλ©΄ -1μ μΆλ ₯νκ³ λ¦¬ν΄νλ€.
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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
|
//7576. ν λ§ν
#include <iostream>
#include <queue>
using namespace std;
int N,M;
int box[1001][1001];
queue<pair<int, int> > tomato;
int dx[] = {-1,1,0,0};
int dy[] = {0,0,-1,1};
int day = 0;
void bfs(){
while(!tomato.empty()){
int x = tomato.front().first;
int y = tomato.front().second;
tomato.pop();
for(int i=0; i<4; i++){
int nx = x+dx[i];
int ny = y+dy[i];
if(nx<0||ny<0||nx>=N||ny>=M) continue;
if(box[nx][ny]==0){
box[nx][ny] = box[x][y] + 1;
tomato.push(make_pair(nx,ny));
}
}
}
}
int main(){
cin >> M >> N;
for(int i=0; i<N; i++){
for(int j=0; j<M; j++){
cin >> box[i][j];
if(box[i][j]==1) tomato.push(make_pair(i, j));
}
}
bfs();
for(int i=0; i<N; i++){
for(int j=0; j<M; j++){
if(box[i][j]==0){
cout << -1 << "\n";
return 0;
}
if(day < box[i][j]){
day = box[i][j];
}
}
}
cout << day-1 << "\n";
return 0;
}
|
cs |
'μκ³ λ¦¬μ¦ > λ¬Έμ νμ΄ Baekjoon' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[λ°±μ€] λΆν μ 볡 - 1780. μ’ μ΄μ κ°μ (0) | 2020.10.21 |
---|---|
[λ°±μ€] 그리λ - 1946. μ μ μ¬μ (0) | 2020.10.01 |
[λ°±μ€][μΌμ± SWμλ ν μ€νΈ] 15683. κ°μ (0) | 2020.04.25 |
[λ°±μ€][μΌμ± SWμλν μ€νΈ] 15685. λλκ³€ μ»€λΈ (0) | 2020.04.21 |
[λ°±μ€] λΈλ£¨νΈν¬μ€ - 14889. μ€ννΈμ λ§ν¬ (0) | 2020.04.19 |