๐ป
[๋ฐฑ์ค] DFS์BFS - 11403. ๊ฒฝ๋ก ์ฐพ๊ธฐ ๋ณธ๋ฌธ
[๋ฐฑ์ค] DFS์BFS - 11403. ๊ฒฝ๋ก ์ฐพ๊ธฐ
๋ํจ๋ 2020. 3. 1. 21:47๋ฌธ์
๊ฐ์ค์น ์๋ ๋ฐฉํฅ ๊ทธ๋ํ G๊ฐ ์ฃผ์ด์ก์ ๋, ๋ชจ๋ ์ ์ (i, j)์ ๋ํด์, i์์ j๋ก ๊ฐ๋ ๊ฒฝ๋ก๊ฐ ์๋์ง ์๋์ง ๊ตฌํ๋ ํ๋ก๊ทธ๋จ์ ์์ฑํ์์ค.
์ ๋ ฅ
์ฒซ์งธ ์ค์ ์ ์ ์ ๊ฐ์ N (1 ≤ N ≤ 100)์ด ์ฃผ์ด์ง๋ค. ๋์งธ ์ค๋ถํฐ N๊ฐ ์ค์๋ ๊ทธ๋ํ์ ์ธ์ ํ๋ ฌ์ด ์ฃผ์ด์ง๋ค. i๋ฒ์งธ ์ค์ j๋ฒ์งธ ์ซ์๊ฐ 1์ธ ๊ฒฝ์ฐ์๋ i์์ j๋ก ๊ฐ๋ ๊ฐ์ ์ด ์กด์ฌํ๋ค๋ ๋ป์ด๊ณ , 0์ธ ๊ฒฝ์ฐ๋ ์๋ค๋ ๋ป์ด๋ค. i๋ฒ์งธ ์ค์ i๋ฒ์งธ ์ซ์๋ ํญ์ 0์ด๋ค.
์ถ๋ ฅ
์ด N๊ฐ์ ์ค์ ๊ฑธ์ณ์ ๋ฌธ์ ์ ์ ๋ต์ ์ธ์ ํ๋ ฌ ํ์์ผ๋ก ์ถ๋ ฅํ๋ค. ์ ์ i์์ j๋ก ๊ฐ๋ ๊ฒฝ๋ก๊ฐ ์์ผ๋ฉด i๋ฒ์งธ ์ค์ j๋ฒ์งธ ์ซ์๋ฅผ 1๋ก, ์์ผ๋ฉด 0์ผ๋ก ์ถ๋ ฅํด์ผ ํ๋ค.
์์ ์ ๋ ฅ1
3
0 1 0
0 0 1
1 0 0
์์ ์ถ๋ ฅ1
1 1 1
1 1 1
1 1 1
์์ ์ ๋ ฅ2
7
0 0 0 1 0 0 0
0 0 0 0 0 0 1
0 0 0 0 0 0 0
0 0 0 0 1 1 0
1 0 0 0 0 0 0
0 0 0 0 0 0 1
0 0 1 0 0 0 0
์์ ์ถ๋ ฅ2
1 0 1 1 1 1 1
0 0 1 0 0 0 1
0 0 0 0 0 0 0
1 0 1 1 1 1 1
1 0 1 1 1 1 1
0 0 1 0 0 0 1
0 0 1 0 0 0 0
์๊ฐ
DFS๋ก ํธ๋ ๊ฒ ์ข ๋ ์ต์ํด์ BFS๋ก ๋ฌธ์ ๋ฅผ ํ์ด๋ณด์๋ค. ์ธ์ ํ๋ ฌ์ ์ด์ฉํด์ ํธ๋ ๋ฌธ์ ์๊ณ , visited๋ฐฐ์ด์ ์ด์ฐจ์๋ฐฐ์ด๋ก ๋์ด์ ์ฐ๊ฒฐ๊ด๊ณ๋ฅผ ์ฒดํฌํ๋ ค๊ณ ํ์๋ค. ์ด์ฐจ์๋ฐฐ์ด A๋ ๊ฒฐ๊ณผ๊ฐ์ ์ถ๋ ฅํ๊ธฐ ์ํด ์ฌ์ฉํ์๋ค.
+) ์ ์ถ ํ ๋ค๋ฅธ ๋ถ๋ค์ ์ฝ๋๋ฅผ ๋ณด๋ ๊ตณ์ด A๋ฐฐ์ด์ ๋ฐ๋ก ๋์ง ์์๋ visited๋ฐฐ์ด์ ์ถ๋ ฅํด๋ ๋๋ ๋ฌธ์ ์๋ค.
์์ฑํ ์ฝ๋
#include <iostream>
#include <queue>
using namespace std;
int n;
int G[101][101];
int A[101][101];
queue<int> q;
bool visited[101][101];
void bfs(int start){
queue<int> q;
q.push(start);
while(!q.empty()){
int node = q.front();
q.pop();
for(int i=0; i<n; i++){
if(G[node][i]==1 && visited[start][i]==false){
visited[start][i] = true;
q.push(i);
A[start][i] = 1;
}
}
}
}
int main(int argc, const char * argv[]) {
// insert code here...
ios_base::sync_with_stdio(false);
cin.tie(0);
cin >> n ;
for(int i=0; i<n; i++){
for(int j=0; j<n; j++){
cin >> G[i][j];
}
}
for(int i=0; i<n; i++){
bfs(i);
}
for(int i=0; i<n; i++){
for(int j=0; j<n; j++){
cout << A[i][j] << ' ';
}
cout << '\n';
}
return 0;
}
'์๊ณ ๋ฆฌ์ฆ > ๋ฌธ์ ํ์ด Baekjoon' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[๋ฐฑ์ค] ๋ค์ต์คํธ๋ผ - 6118. ์จ๋ฐ๊ผญ์ง(๋ฌธ์ ํธ๋์ค) (0) | 2020.03.04 |
---|---|
[๋ฐฑ์ค] ๋ธ๋ฃจํธํฌ์ค - 1018. ์ฒด์คํ ๋ค์ ์น ํ๊ธฐ (0) | 2020.03.01 |
[๋ฐฑ์ค] DFS์BFS - 1260.DFS์ BFS (0) | 2020.03.01 |
[๋ฐฑ์ค] DFS์BFS - 10026. ์ ๋ก์์ฝ (0) | 2020.02.28 |
[๋ฐฑ์ค] ๊ทธ๋ฆฌ๋์๊ณ ๋ฆฌ์ฆ - 1120. ๋ฌธ์์ด (0) | 2020.02.28 |