编程题
小秘密 ### 题目描述 $n$ 个小朋友正在做一个游戏,每个人要分享一个自己的小秘密。 每个小朋友都有一个 $1$ 到 $n$ 的编号,编号不重复。 为了让这个游戏更有趣,老师给每个小朋友发了一张卡片,上面有一个 $1$ 到 $n$ 的数字,每个数字正 好出现一次。   每个小朋友都将自己的秘密写在纸上,然后根据老师发的卡片上的数字将秘密传递给对应编号的小 朋友。如果老师发给自己的数字正好是自己的编号,这个秘密就留在自己手里。   小朋友们拿到其他人的秘密后会记下这个秘密,老师会再指挥所有小朋友将手中的秘密继续传递,仍然根据老师发的卡片上的数字将秘密传递给对应编号的小朋友。   这样不断重复 $n$ 次。   现在,每个小朋友都记下了很多个秘密。   老师现在想找一些小朋友,能说出所有秘密,请问老师最少要找几个小朋友? ### 输入描述 输入的第一行包含一个整数 $n$。   第二行包含 $n$ 个整数 $a[1], a[2], \cdots, a[n]$,相邻的整数间用空格分隔,分别表示编号 $1$ 到 $n$ 的小朋友 收到的数字。 ### 输出描述 输出一行包含一个整数,表示答案。 ### 输入输出样例 #### 示例 >输入 ```txt 6 2 1 3 5 6 4 ``` >输出 ```txt 3 ``` ### 样例说明 最终小朋友 $1, 2$ 互相知道了对方的秘密,小朋友 $3$ 只知道自己的秘密,小朋友 $4, 5, 6$ 互相知道了对方的秘密。 至少要找 $3$ 个小朋友才能说出所有秘密。 ### 评测用例规模与约定 对于 $30$% 的评测用例,$2 \leq n \leq 30$。 对于 $60$% 的评测用例,$2 \leq n \leq 1000$。   对于所有评测用例,$2 \leq n \leq 100000$。
查看答案
赣ICP备20007335号-2