https://www.acmicpc.net/problem/1260
๋ฌธ์
๊ทธ๋ํ๋ฅผ DFS๋ก ํ์ํ ๊ฒฐ๊ณผ์ BFS๋ก ํ์ํ ๊ฒฐ๊ณผ๋ฅผ ์ถ๋ ฅํ๋ ํ๋ก๊ทธ๋จ์ ์์ฑํ์์ค. ๋จ, ๋ฐฉ๋ฌธํ ์ ์๋ ์ ์ ์ด ์ฌ๋ฌ ๊ฐ์ธ ๊ฒฝ์ฐ์๋ ์ ์ ๋ฒํธ๊ฐ ์์ ๊ฒ์ ๋จผ์ ๋ฐฉ๋ฌธํ๊ณ , ๋ ์ด์ ๋ฐฉ๋ฌธํ ์ ์๋ ์ ์ด ์๋ ๊ฒฝ์ฐ ์ข ๋ฃํ๋ค. ์ ์ ๋ฒํธ๋ 1๋ฒ๋ถํฐ N๋ฒ๊น์ง์ด๋ค.
์ ๋ ฅ
์ฒซ์งธ ์ค์ ์ ์ ์ ๊ฐ์ N(1 ≤ N ≤ 1,000), ๊ฐ์ ์ ๊ฐ์ M(1 ≤ M ≤ 10,000), ํ์์ ์์ํ ์ ์ ์ ๋ฒํธ V๊ฐ ์ฃผ์ด์ง๋ค. ๋ค์ M๊ฐ์ ์ค์๋ ๊ฐ์ ์ด ์ฐ๊ฒฐํ๋ ๋ ์ ์ ์ ๋ฒํธ๊ฐ ์ฃผ์ด์ง๋ค. ์ด๋ค ๋ ์ ์ ์ฌ์ด์ ์ฌ๋ฌ ๊ฐ์ ๊ฐ์ ์ด ์์ ์ ์๋ค. ์ ๋ ฅ์ผ๋ก ์ฃผ์ด์ง๋ ๊ฐ์ ์ ์๋ฐฉํฅ์ด๋ค.
์ถ๋ ฅ
์ฒซ์งธ ์ค์ DFS๋ฅผ ์ํํ ๊ฒฐ๊ณผ๋ฅผ, ๊ทธ ๋ค์ ์ค์๋ BFS๋ฅผ ์ํํ ๊ฒฐ๊ณผ๋ฅผ ์ถ๋ ฅํ๋ค. V๋ถํฐ ๋ฐฉ๋ฌธ๋ ์ ์ ์์๋๋ก ์ถ๋ ฅํ๋ฉด ๋๋ค.
ํ์ด
#include <iostream>
#include <vector>
#include <queue>
#include <algorithm>
using namespace std;
int n, m, v;
vector<vector<int>> graph(1002);
vector<bool> visit_dfs(1002, false);
vector<bool> visit_bfs(1002, false);
void dfs(int cur) {
cout << cur << " ";
visit_dfs[cur] = true;
for(int i : graph[cur]) {
if(visit_dfs[i]) continue;
dfs(i);
}
}
void bfs() {
queue<int> q;
q.push(v);
visit_bfs[v] = true;
while(!q.empty()) {
int cur = q.front();
cout << cur << " ";
q.pop();
for(int i : graph[cur]) {
if(visit_bfs[i]) continue;
q.push(i);
visit_bfs[i] = true;
}
}
}
int main() {
// ์
๋ ฅ
cin >> n >> m >> v;
int a, b;
while(m--) {
cin >> a >> b;
graph[a].push_back(b);
graph[b].push_back(a);
}
// ์ ๋ ฌ
for(int i=1; i<=n; i++) {
sort(graph[i].begin(), graph[i].end());
}
// ์ฐ์ฐ ๋ฐ ์ถ๋ ฅ
dfs(v);
cout << "\n";
bfs();
return 0;
}
'๐ BOJ > Class 3' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[BOJ][C++] ๋ฐฑ์ค 11727๋ฒ: 2xn ํ์ผ๋ง 2 (0) | 2023.03.27 |
---|---|
[BOJ][C++] ๋ฐฑ์ค 9461๋ฒ: ํ๋๋ฐ ์์ด (0) | 2023.03.27 |
[BOJ][C++] ๋ฐฑ์ค 1764๋ฒ: ๋ฃ๋ณด์ก (0) | 2023.03.24 |
[BOJ][C++] ๋ฐฑ์ค 11724๋ฒ: ์ฐ๊ฒฐ ์์์ ๊ฐ์ (0) | 2023.03.01 |
[BOJ][C++] ๋ฐฑ์ค 11726๋ฒ: 2xn ํ์ผ๋ง (0) | 2023.02.23 |