문제
시행 착오
해결 방법
벡터를 이용해 그래프를 구현하고, DFS 는 재귀호출을 통해, BFS 는 큐를 이용해 구현했다.
정점 순서대로 순회 하려면 입력 받은 뒤 sort를 해주어야 한다.
#include <iostream>
#include <vector>
#include <queue>
#include <algorithm>
using namespace std;
int N, M, V;
vector<int> g[1001];
bool visited[10001] = { false };
queue<int> q;
vector<int> v_bfs;
vector<int> v_dfs;
void dfs(int node)
{
visited[node] = true;
v_dfs.push_back(node);
for (int nextnode : g[node])
{
if (!visited[nextnode])
{
dfs(nextnode);
}
}
}
void bfs(int node)
{
q.push(node);
visited[node] = true;
while (!q.empty())
{
int nextnode = q.front();
q.pop();
v_bfs.push_back(nextnode);
for (int next : g[nextnode])
{
if (!visited[next])
{
visited[next] = true;
q.push(next);
}
}
}
}
int main() {
cin >> N >> M >> V;
for (int i = 0; i < M; i++) {
int u, v;
cin >> u >> v;
g[u].push_back(v);
g[v].push_back(u);
}
for (int i = 1; i <= N; i++)
sort(g[i].begin(), g[i].end());
dfs(V);
for (int i : v_dfs)
cout << i << " ";
cout << '\n';
fill(visited, visited + 10001, false);
bfs(V);
for (int i : v_bfs)
cout << i << " ";
return 0;
}
'프로그래밍 공부 > 백준 (C++)' 카테고리의 다른 글
[C++ / 백준 1707번] 이분 그래프 (0) | 2025.02.26 |
---|---|
[C++ / 백준 11724번] 연결 요소의 개수 (0) | 2025.02.22 |
[C++ / 백준 13023번] ABCDE (0) | 2025.02.20 |
[C++ / 백준 14391번] 종이 조각 (0) | 2025.02.20 |
[C++ / 백준 1182번] 부분 수열의 합 (0) | 2025.02.19 |