반응형
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
- 문법
- data_structure
- singly Linked List
- 5397
- deletion
- Critical_Path_Analysis
- '0'
- 자료구조
- c++
- list
- 구현
- function_template
- Articulation_Point
- class_template
- STL
- Pair
- sstream
- Algorithm
- qsort
- red-black tree
- Biconnected_Component
- 13305
- Heap
- sort
- 백준
- connected_component
- 알고리즘
- 예제
- template
- 총정리
Archives
- Today
- Total
- Today
- Total
- 방명록
어제의 나보다 성장한 오늘의 나
[C++][BFS / DFS] 백준 10451번 문제 풀이 본문
반응형
문제
◎ 저는 이 문제를 adjacent matrix를 만들고 DFS로 탐색하며 문제를 해결하였습니다.
Code
// BaekJoon 10451
// Title : 순열 사이클
// URL : https://www.acmicpc.net/problem/10451
#include <iostream>
#include <vector>
using namespace std;
// DFS recursion
void DFS(vector<vector<bool>> &arr ,vector<bool> &check ,int i){
check[i-1] = true;
for(int j = 1 ; j <= check.size(); ++j){
if(arr[i-1][j-1] == true && check[j-1] == false) DFS(arr,check, j );
}
}
int main(int argc , char** argv){
int T , N , temp;
cin >> T;
while(T--){
int cnt = 0; // answer
cin >> N;
vector<vector<bool>> arr(N , vector<bool>(N , false)); // adj matrix
vector<bool> check ( N , false ); // check list
for(int i = 1 ; i <= N ; ++i){
cin >> temp;
arr[i-1][temp - 1] = true;
arr[temp-1][i-1] = true;
}
for(int i = 1 ; i <= N ; ++i){
if(check[i-1] == false){
DFS(arr , check, i ); // DFS or BFS
cnt++;
}
}
cout << cnt << endl;
}
}
https://www.acmicpc.net/problem/10451
반응형
'c++ > 백준 문제 풀이' 카테고리의 다른 글
[C++] [BFS / DFS] 백준 2331 번 문제 풀이 (0) | 2022.08.19 |
---|---|
[C++][BFS / DFS] 백준 2606번 문제 풀이 (0) | 2022.08.19 |
[C++][자료구조 Stack] 백준 10828번 문제 풀이 (0) | 2022.07.24 |
[C++] 백준 5397번 풀이 (0) | 2022.07.24 |
[C++][집합 / 자료구조] 백준 1717번 풀이 및 설명 (0) | 2022.07.01 |
Comments