한줄 후기 : 순열 싸이클이 뭔지 몰라서 고민
https://www.acmicpc.net/problem/10451
10451번: 순열 사이클
문제 1부터 N까지 정수 N개로 이루어진 순열을 나타내는 방법은 여러 가지가 있다. 예를 들어, 8개의 수로 이루어진 순열 (3, 2, 7, 8, 1, 4, 5, 6)을 배열을 이용해 표현하면 \(\begin{pmatrix} 1 & 2 &3&4&5&6&7&8 \\ 3& 2&7&8&1&4&5&6 \end{pmatrix}\) 와 같다. 또는, Figure 1과 같이 방향 그래프로 나타낼 수도 있다. 순열을 배열을 이용해 \(\begin{pmatrix} 1
www.acmicpc.net
그냥 받아서 모든 정점 dfs 돌리고 체크 되어있지 않으면 싸이클 + 1 해주면 됨
#include <iostream>
using namespace std;
int a[1003];
bool b[1003] = {};
void check(int n);
int main() {
int t;
cin >> t;
while (t--) {
int n;
int cnt = 0;
cin >> n;
for (int i = 1; i <= n; i++) {
cin >> a[i];
}
for (int i = 1; i <= n; i++) {
if (b[i] == false) {
check(i);
cnt++;
}
}
cout << cnt << endl;
for (int i = 1; i <= n; i++) {
b[i] = false;
}
}
return 0;
}
void check(int n) {
b[n] = true;
if (b[a[n]] == false) check(a[n]);
else return;
}
'DEV > PS' 카테고리의 다른 글
[1003] 피보나치 함수, c++ (0) | 2019.07.26 |
---|---|
[5567] 결혼식, C++ (0) | 2019.07.24 |
[7576] 토마토, C++ (0) | 2019.07.24 |
[2606] 바이러스, C++ (0) | 2019.07.24 |
[11724] 연결 요소의 개수, C/C++ (0) | 2019.07.24 |