# 团伙首领## 题目描述某 E 正在机房值班小朋友吵得她头晕脑胀她将 $N$ 名吵闹的小朋友带出了机房依次编号为 $12cdotsN$。某 E 发现这些小朋友形成了若干个小团伙每个小朋友属于且只属于一个小团伙。她要求每一名小朋友指出自己所在小团伙的首领编号第 $i$ 名小朋友指认的首领编号为 $S_i$。假定所有小朋友都没有说谎请问这 $N$ 名小朋友中一共形成了多少个小团伙?## 输入格式输入
#include <iostream>
#include <vector>
#include <unordered_set>
using namespace std;
int main() {
int N;
cin >> N;
vector<int> S(N);
for (int i = 0; i < N; i++) {
cin >> S[i];
}
unordered_set<int> leaders;
for (int i = 0; i < N; i++) {
if (S[i] == i+1) {
leaders.insert(i+1);
}
}
cout << leaders.size() << endl;
return 0;
}
原文地址: https://www.cveoy.top/t/topic/h4m6 著作权归作者所有。请勿转载和采集!