cgy12306
[백준 BoJ] 9466 - 텀 프로젝트 본문
// https://www.acmicpc.net/problem/9466
// 텀 프로젝트
#include<iostream>
#include<cstring>
using namespace std;
int T, n, cnt = 0;
int student[100002];
bool visited[100002], done[100002];
void dfs(int start) {
visited[start] = true;
int next = student[start];
if (!visited[next]) {
dfs(next);
}
else if (!done[next]) {
for (int i = next; i != start; i = student[i]) {
cnt++;
}
cnt++;
}
done[start] = true;
}
int main() {
ios::sync_with_stdio(false);
cin.tie(NULL); cout.tie(NULL);
cin >> T;
for (int t = 0; t < T; t++) {
cin >> n;
memset(visited, false, sizeof(visited));
memset(done, false, sizeof(done));
for (int i = 1; i <= n; i++) {
cin >> student[i];
}
for (int i = 1; i <= n; i++) {
if (!visited[i]) {
dfs(i);
}
}
cout << n - cnt <<"\n";
cnt = 0;
}
}
'Algorithm > C++' 카테고리의 다른 글
[백준 BoJ] 1932 - 정수 삼각형 (0) | 2021.08.25 |
---|---|
[백준 BoJ] 10844 - 쉬운 계단 수 (0) | 2021.08.25 |
[백준 BoJ] 2146 - 다리 만들기 (0) | 2021.08.17 |
[백준 BoJ] 1167 - 트리의 지름 (0) | 2021.08.10 |
[백준 BoJ] 1967 - 트리의 지름 (0) | 2021.08.10 |
Comments