๋ฌธ์
๊ทธ๋ํ๋ฅผ DFS๋ก ํ์ํ ๊ฒฐ๊ณผ์ BFS๋ก ํ์ํ ๊ฒฐ๊ณผ๋ฅผ ์ถ๋ ฅํ๋ ํ๋ก๊ทธ๋จ์ ์์ฑํ์์ค. ๋จ, ๋ฐฉ๋ฌธํ ์ ์๋ ์ ์ ์ด ์ฌ๋ฌ ๊ฐ์ธ ๊ฒฝ์ฐ์๋ ์ ์ ๋ฒํธ๊ฐ ์์ ๊ฒ์ ๋จผ์ ๋ฐฉ๋ฌธํ๊ณ , ๋ ์ด์ ๋ฐฉ๋ฌธํ ์ ์๋ ์ ์ด ์๋ ๊ฒฝ์ฐ ์ข ๋ฃํ๋ค. ์ ์ ๋ฒํธ๋ 1๋ฒ๋ถํฐ N๋ฒ๊น์ง์ด๋ค.
์ ๋ ฅ
์ฒซ์งธ ์ค์ ์ ์ ์ ๊ฐ์ N(1 ≤ N ≤ 1,000), ๊ฐ์ ์ ๊ฐ์ M(1 ≤ M ≤ 10,000), ํ์์ ์์ํ ์ ์ ์ ๋ฒํธ V๊ฐ ์ฃผ์ด์ง๋ค. ๋ค์ M๊ฐ์ ์ค์๋ ๊ฐ์ ์ด ์ฐ๊ฒฐํ๋ ๋ ์ ์ ์ ๋ฒํธ๊ฐ ์ฃผ์ด์ง๋ค. ์ด๋ค ๋ ์ ์ ์ฌ์ด์ ์ฌ๋ฌ ๊ฐ์ ๊ฐ์ ์ด ์์ ์ ์๋ค. ์ ๋ ฅ์ผ๋ก ์ฃผ์ด์ง๋ ๊ฐ์ ์ ์๋ฐฉํฅ์ด๋ค.
์ถ๋ ฅ
์ฒซ์งธ ์ค์ DFS๋ฅผ ์ํํ ๊ฒฐ๊ณผ๋ฅผ, ๊ทธ ๋ค์ ์ค์๋ BFS๋ฅผ ์ํํ ๊ฒฐ๊ณผ๋ฅผ ์ถ๋ ฅํ๋ค. V๋ถํฐ ๋ฐฉ๋ฌธ๋ ์ ์ ์์๋๋ก ์ถ๋ ฅํ๋ฉด ๋๋ค.
๋ฐฑ์ค ์ค๋ฒ2 / dfs์ bfs
๋ ๊ฐ๋ ์ ์๊ณ ์์์ง๋ง, ๊ฐ์ก๊ณ ์ ๋๋ก ๋ฌธ์ ํ์ด๋ณธ๊ฑด ์ฒ์์ธ๋ฏ
๋๋๊ฒ๋ 1์๊ฐ๋์ ์ฝ์งํจ..^^ (์ํ์ง๋ง์ธ์ ์์ )
๊ทธ๋๋ ์ฝ์งํ ๋งํผ ๋์ ์ ๋๋ก ๋ฐํ๋ค.
์ด์ ๋ค๋ฅธ ๊ทธ๋ํ ๋ฌธ์ ๋ค์ ์ฝ๊ฒ ํ ์ ์์๊ฑฐ์ผ ๊ณผ์ฐ
๊ธฐ์ตํด๋ฌ๋ผ ๋ฏธ๋์ ๋ฉ์ฒญํ ๋์ผ
1. bfs๋ ๋ฌด์กฐ๊ฑด queue ์ฐ๋๊ฒ ์ ์์ ๊ผผ์ใดใด
2. dfs ์ฌ๊ท๋ก ํ๊ฑฐ๋ฉด ์ ์ญ๋ณ์ ํ์.
3. ๊ทธ๋ํ ๋ฌธ์ ๋ ์ ๋ ฅ๋ฐ์๋ง์ matrix๋ก ์ ์ฅํด๋์ผ๋ฉด ๋์ค์ ํธํ๋ค
#include <iostream>
#include <queue>
using namespace std;
int n;
int m;
int v;
int mat[1001][1001];
int dfs_visited[1002] = {0}; // dfs๋ ์ฌ๊ท๋ก ํ๊ฑฐ๋ผ์ ์ ์ญ๋ณ์ ๋ฐฐ์ด visited ํ์
int dfs(int V){
cout << V << " ";
dfs_visited[V] = 1;
for (int i = 1; i <= n; ++i){
if(dfs_visited[i]==1 || mat[V][i] == 0) continue; // ์ด๋ฏธ ๋ฐฉ๋ฌธํ๊ฑฐ๋ mat์ ์๋ค๋ฉด ์คํต
// V = i
dfs(i);
}
return 0;
}
int bfs(int V){
int bfs_visited[1002] = {0};
queue<int> q; // bfs๋ ํญ์ queue๋ฅผ ์ฌ์ฉํ๋ค.
q.push(V);
bfs_visited[V] = 1;
while(!q.empty()){
int x = q.front();
cout << x << " ";
q.pop();
for (int i = 1; i <= n; ++i){
if(bfs_visited[i]==1 || mat[x][i] == 0) continue; // ์ด๋ฏธ ๋ฐฉ๋ฌธํ๊ฑฐ๋ mat์ ์๋ค๋ฉด ์คํต
q.push(i);
bfs_visited[i] = 1;
}
}
return 0;
}
int main(){
cin >> n >> m >> v;
int x, y;
for (int i = 0; i < m; ++i) {
cin >> x >> y;
mat[x][y] = mat[y][x] = 1; // ๋งคํธ๋ฆญ์ค๋ก ๊ทธ๋ํ ํํ
}
int V = v;
dfs(V);
cout << "\n";
bfs(V);
return 0;
}
'๐ ์๊ณ ๋ฆฌ์ฆ > BOJ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[C++/BOJ] 2293 : ๋์ 1 (0) | 2023.02.22 |
---|---|
[C++/๋ฐฑ์ค] 11052 : ์นด๋ ๊ตฌ๋งคํ๊ธฐ (0) | 2023.02.21 |
[C++/๋ฐฑ์ค] 1149 : RGB ๊ฑฐ๋ฆฌ (0) | 2023.02.21 |
[C++/๋ฐฑ์ค] 9095 : 1, 2, 3 ๋ํ๊ธฐ (0) | 2023.02.21 |
[C++/๋ฐฑ์ค] 1924 : 2007๋ (0) | 2023.02.21 |