Notice
Recent Posts
Recent Comments
Link
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | |||||
| 3 | 4 | 5 | 6 | 7 | 8 | 9 |
| 10 | 11 | 12 | 13 | 14 | 15 | 16 |
| 17 | 18 | 19 | 20 | 21 | 22 | 23 |
| 24 | 25 | 26 | 27 | 28 | 29 | 30 |
| 31 |
Tags
- 그리기 연산
- directx12 그리기 연산2
- 백준 1260 c++
- BFS
- 2565번
- lis응용
- 백준 24444 c++
- Perforce
- 다음소수
- 2d 박스충돌
- 드래곤플라이트 모작
- Unreal
- dx12 정리
- 4134번
- WinAPI
- 2075번
- C++
- dx12
- 다익스트라
- DirectX12
- unrealengine
- 백준 c++ 24479번
- 24779
- 백준
- 11286번
- 루트서명
- 뱀과사다리게임
- 랜더링 파이프라인
- 바이토닉 수열
- 애니메이션
Archives
- Today
- Total
game-1 님의 블로그
[백준] 24479번 C++ 문제풀이 본문

- 탐색 순서: 특정 경로를 따라 끝까지 탐색한 뒤, 다른 경로로 전환.
- 자료구조: 재귀(스택 기반 호출 스택) 또는 명시적으로 스택을 활용.
- 시간복잡도: O(V+E)
- 적용 사례: 경로 찾기, 사이클 탐지, 연결 요소 확인, 위상 정렬 등.

#include <iostream>
#include <vector>
#include <algorithm>
#include<array>
using namespace std;
vector<int> graph[200000];
array<int, 200'001> visited{};
int cnt{};
void dfs(int node) {
if (visited[node]) return;
visited[node] = ++cnt;
for (int i = 0; i < graph[node].size(); ++i) {
int y = graph[node][i];
dfs(y);
}
}
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());
}
// DFS 수행
dfs(r);
// 방문 순서 출력
for (int i = 1; i <= n; ++i) {
cout << visited[i] << '\n';
}
}
dfs는 재귀와 스택으로 푸는 방식이 있는데 구현에 있어서 재귀가 조금 더 간편하다.
따라서 이번에는 재귀를 이용해서 풀어보았다.
'백준 문제풀이' 카테고리의 다른 글
| [백준] 1929번 C++ 소수구하기 (0) | 2024.12.27 |
|---|---|
| [백준] 4134번 C++ 다음 소수 (1) | 2024.12.26 |
| [백준] 1260번 C++ DFS,BFS (0) | 2024.12.23 |
| [백준] 24445 C++ BFS (0) | 2024.12.22 |
| [백준] C++ 24444번 문제풀이 BFS (0) | 2024.12.22 |