#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int main() {
int N, M, V;
cin >> N >> M >> V;
// 그래프 저장
vector<int> graph[1001];
bool visited[1001];
// 방문 배열 초기화
for (int i = 1; i <= N; i++) {
visited[i] = false;
}
// 간선 입력
for (int i = 0; i < M; i++) {
int a, b;
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());
}
// 스택 만들기
vector<int> stack;
stack.push_back(V);
// DFS 시작
while (!stack.empty()) {
int v = stack.back();
stack.pop_back();
if (visited[v] == true) {
continue;
}
visited[v] = true;
cout << v << " ";
// 스택 특성 때문에 뒤에서부터 넣기
for (int i = (int)graph[v].size() - 1; i >= 0; i--) {
int next = graph[v][i];
if (visited[next] == false) {
stack.push_back(next);
}
}
}
return 0;
}
To embed this project on your website, copy the following code and paste it into your website's HTML: