그래프를 DFS로 탐색한 결과와 BFS로 탐색한 결과를 출력하는 프로그램을 작성하시오
#include <iostream>
#include <vector>
#include <queue>
#include <algorithm>
using namespace std;
static int N, M, startVertex;
static vector<bool> isVisited(1001);
static vector<int> graph[1001];
void dfs(int here) {
cout << here << ' ';
isVisited[here] = true;
for (const int& there : graph[here])
if (!isVisited[there]) dfs(there);
}
void bfs(int here) {
queue<int> q;
isVisited[here] = true;
q.push(here);
while (!q.empty()) {
int curVertex = q.front(); q.pop();
cout << curVertex << ' ';
for (const int& there : graph[curVertex]) {
if (!isVisited[there]) {
isVisited[there] = true;
q.push(there);
}
}
}
}
int main() {
ios::sync_with_stdio(false); cin.tie(nullptr); cout.tie(nullptr);
cin >> N >> M >> startVertex;
for (int i = 0; i < M; ++i) {
int startV = 0, endV = 0; cin >> startV >> endV;
graph[startV].push_back(endV);
graph[endV].push_back(startV);
}
for (int i = 1; i <= N; ++i) sort(begin(graph[i]), end(graph[i]));
dfs(startVertex); cout << '\n';
isVisited.assign(N, false);
bfs(startVertex); cout << '\n';
}
sort()
함수를 사용해야 함을 주의하자.fill()
함수 또는 assign()
함수를 사용해야 한다.