๋ฌธ์
https://www.acmicpc.net/problem/1260
๋ฌธ์ ์ดํด
- ๊ทธ๋ํ๋ฅผ DFS๋ก ํ์ํ ๊ฒฐ๊ณผ์ BFS๋ก ํ์ํ ๊ฒฐ๊ณผ ์ถ๋ ฅ
๋ฌธ์ ํ์ด
์ฃผ์ด์ง ๊ฐ์ ๊ณผ ๋ ์ ์ ์ ๋ฒํธ๋ฅผ ์ด์ฉํด ์ธ์ ํ๋ ฌ์ ์ ์ฅํ๋ค.
๐ก DFS
ํ์ฌ ์ ์ ๊ณผ ์ฐ๊ฒฐ๋ ์ ์ ์ ์์๋๋ก ์ฌ๊ท ํ์ํ๋ค.
์์ V → V์ ์ฐ๊ฒฐ๋ ์ ์ A → A์ ์ฐ๊ฒฐ๋ ์ ์ B → B์ ์ฐ๊ฒฐ๋ ์ ์ C ..
- ์ธ์ ํ๋ ฌ adj[cur][1 ~ n] ์ํ. ์ฐ๊ฒฐ๋์ด ์์ผ๋ฉด dfs(next)
- dfs ํ์ํ๋ฉด์ ๋ฐฉ๋ฌธ ํ์ & ์ถ๋ ฅ ๋ฐฐ์ด์ ์ฝ์ ํ๊ธฐ
- ์ด๋ฏธ ๋ฐฉ๋ฌธํ ๊ณณ์ด๋ฉด return
๐ก BFS
ํ์ฌ ์ ์ ๊ณผ ์ฐ๊ฒฐ๋ ์ ์ ์ ๋ชจ๋ ํ์ ์ฝ์ ํ๊ณ ํ์์ ์ ์ ์ ๊บผ๋ด๋ฉด์ ํ์ํ๋ค.
์์ V → V์ ์ฐ๊ฒฐ๋ ์ ์ A → V์ ์ฐ๊ฒฐ๋ ์ ์ B → …
A์ ์ฐ๊ฒฐ๋ ์ ์ A’ → A’์ ์ฐ๊ฒฐ๋ ์ ์ A’’ → …
B์ ์ฐ๊ฒฐ๋ ์ ์ B' → B’์ ์ฐ๊ฒฐ๋ ์ ์ B’’ → …
- ์์ ์ ์ ๋ถํฐ ํ์ ์ฝ์ ํ์ฌ ํ๊ฐ ๋น ๋๊น์ง ์ํํ๋ค.
- ํ์์ ๊บผ๋ธ ํ์ฌ ์ ์ ์ ํ์ํ๋ค.
- ์ธ์ ํ๋ ฌ adj[cur][1 ~ n] ์ํ. ์ฐ๊ฒฐ๋์ด ์๊ณ ๋ฐฉ๋ฌธ ์ ํ ์ ์ ์ด๋ฉด ํ์ ์ ์ฅ
- ํ์ํ๋ฉด์ ๋ฐฉ๋ฌธ ํ์ & ์ถ๋ ฅ ๋ฐฐ์ด์ ์ฝ์ ํ๊ธฐ
์ฝ๋
#include <iostream>
#include <vector>
#include <queue>
using namespace std;
int n, m, v;
vector<vector<bool>> adj;
vector<bool> visited_dfs;
vector<int> ans_dfs;
void dfs(int cur)
{
if (visited_dfs[cur])
return;
visited_dfs[cur] = true;
ans_dfs.push_back(cur);
for (int next = 1; next < n + 1; next++)
{
if (adj[cur][next])
dfs(next);
}
}
vector<int> bfs()
{
queue<int> q;
vector<int> visited_bfs(n + 1, false);
vector<int> ans_bfs;
q.push(v);
visited_bfs[v] = true;
while(!q.empty()){
int cur = q.front();
ans_bfs.push_back(cur);
q.pop();
for(int next = 1; next < n + 1; next++){
if (!adj[cur][next] || visited_bfs[next])
continue;
visited_bfs[next] = true;
q.push(next);
}
}
return ans_bfs;
}
int main()
{
// ์
๋ ฅ
int a, b;
cin >> n >> m >> v;
adj.assign(n + 1, vector<bool>(n + 1, false));
visited_dfs.assign(n + 1, false);
for (int i = 0; i < m; i++)
{
cin >> a >> b;
adj[a][b] = true;
adj[b][a] = true;
}
// ์ฐ์ฐ
dfs(v);
// ์ถ๋ ฅ
for (int i : ans_dfs)
cout << i << ' ';
cout << '\n';
for (int i: bfs())
cout << i << ' ';
return 0;
}
'๐ญ Problem Solving > C++' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[BOJ][C++] ๋ฐฑ์ค 1890๋ฒ: ์ ํ (0) | 2025.04.23 |
---|---|
[BOJ][C++] ๋ฐฑ์ค 2579๋ฒ: ๊ณ๋จ์ค๋ฅด๊ธฐ (0) | 2025.04.23 |
[BOJ][C++] ๋ฐฑ์ค 2667๋ฒ: ๋จ์ง๋ฒํธ๋ถ์ด๊ธฐ (0) | 2024.11.11 |
[BOJ][C++] ๋ฐฑ์ค 3085๋ฒ: ์ฌํ ๊ฒ์ (0) | 2024.10.30 |
[BOJ][C++] ๋ฐฑ์ค 1789๋ฒ: ์๋ค์ ํฉ (0) | 2024.10.29 |