1912. 铁憨憨骑士团的小队分配

时间限制 1000 ms   内存限制 256 MB

在遥远的憨憨王国,有一个铁憨憨骑士团。骑士团中有 $n$ 位骑士。

为了使骑士们团结互助、尽可能发挥集体的战斗力,骑士团规定,每位骑士必须成为某一位骑士的“守护骑士”,遇到危险时优先保护他。

每位骑士都至少要被一位骑士守护。显然,骑士不能守护自己。

骑士团的团长有一天心血来潮,决定将骑士们分成若干个小队。有强迫症的团长对分队方法有着自己的一套要求:

1、每个骑士都不能和自己的守护骑士在同一个小队中;

2、如果有两个骑士在同一个小队中,并且守护了两个不同的骑士,那么他们守护的那两个骑士也必须在同一个小队中。

举例来说,如果骑士A守护骑士B,骑士C守护骑士D,A和C在同一个小队,那么B和D必须在同一个小队,并且这个小队不能是A和C所在的那个小队。

因为小队长的工资很高,为了节省开销,团长找到了你,想知道在满足以上条件的情况下,骑士团至少需要分成几个小队。

输入数据

第一行一个整数 $n(2\le n\le 500)$,表示骑士团中骑士的数量。
第二行 $n$ 个整数,以空格隔开,第 $i$ 个数字 $a_i$ 表示编号为 $i$ 的骑士守护了编号为 $a_i$ 的骑士。
输入数据保证 $i\neq a_i$。

输出数据

一行一个整数,表示骑士团至少需要分成几个小队。

样例输入

复制
9
6 7 1 9 8 3 4 2 5 \n
 · · · · · · · · \n

样例输出

复制
3 \n

样例说明

只需要分成3个小队,第一个小队有1、2、9号骑士,第二个小队有5、6、7号骑士,第三个小队有3、4、8号骑士即可。

提交

请先 登录

© 2024 FAQs Contact About