dh-winternagi 님의 블로그
(24480) 알고리즘 수업 - 깊이 우선 탐색 2 본문
https://www.acmicpc.net/problem/24480
단계별로 풀어보기
27단계(그래프와 순회) 2번째

#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int main() {
ios::sync_with_stdio(false);
cin.tie(NULL);
cout.tie(NULL);
int n, m, r, x= 1;
cin >> n >> m >> r;
vector adj(n+1, vector<int>());
vector<int> visited(n+1);
while(m--){
int u, v;
cin >> u >> v;
adj[u].push_back(v);
adj[v].push_back(u);
}
for(int i=1;i<=n;i++) sort(adj[i].begin(), adj[i].end(), greater<int>());
auto dfs= [&](auto self, int now) -> void {
visited[now]= x++;
for(int next:adj[now]){
if(visited[next]) continue;
self(self, next);
}
};
dfs(dfs, r);
for(int i=1;i<=n;i++) cout << visited[i] << "\n";
return 0;
}'백준 (C++) > Solve' 카테고리의 다른 글
| (24445) 알고리즘 수업 - 너비 우선 탐색 2 (0) | 2026.04.18 |
|---|---|
| (24444) 알고리즘 수업 - 너비 우선 탐색 1 (0) | 2026.04.18 |
| (24479) 알고리즘 수업 - 깊이 우선 탐색 1 (0) | 2026.04.18 |
| (1202) 보석 도둑 (0) | 2026.04.18 |
| (2696) 중앙값 구하기 (0) | 2026.04.18 |
