728x90
문제 24480번
https://www.acmicpc.net/problem/24480
이번에는 어제 풀었던 문제랑 다른 점이 하나 있다. 바로 인접 정점은 내림차순으로 방문한다는 것이다.
그렇기때문에 sort로 정렬하는 과정에서 greater<int>()만 뒤에 추가해주면 오름차순이 아닌 내림차순으로 정렬시켜줄 수 있다. 어제는 공부하고 풀었기 때문에 다음에는 안 보고 잘 풀 수 있을까 했는데 다행히 오늘 풀어봤을 때 잘 기억하고 있는 것 같다.
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
vector <int> graph[100001];
bool visited[100001];
int result[100001];
int cnt = 0;
void dfs(int r) {
if (visited[r] == true) {
return;
}
visited[r] = true;
cnt++;
result[r] = cnt;
for (int i = 0; i < graph[r].size(); i++) {
dfs(graph[r][i]);
}
}
int main() {
int n, m, r;
cin >> n >> m >> r;
for (int i = 0; i < m; i++) {
int u, v;
cin >> u >> v;
graph[u].push_back(v);
graph[v].push_back(u);
}
for (int i = 1; i <= n; i++) { //내림차순
sort(graph[i].begin(), graph[i].end(), greater<int>());
}
dfs(r);
for (int i = 1; i <= n; i++) {
cout << result[i] << '\n';
}
return 0;
}
728x90
'백준 > C++' 카테고리의 다른 글
[C++] 백준 24445번 - 알고리즘 수업(너비 우선 탐색 2) (0) | 2024.07.09 |
---|---|
[C++] 백준 24444번 - 알고리즘 수업(너비 우선 탐색 1) (0) | 2024.07.09 |
[C++] 백준 24479번 - 알고리즘 수업(깊이 우선 탐색 1) (0) | 2024.07.04 |
[C++] 백준 10870번 - 피보나치 수 5 (0) | 2024.07.03 |
[C++] 백준 27433번 - 팩토리얼 2 (0) | 2024.07.02 |