#P16033. [Lot2016]politic
[Lot2016]politic
题目背景
有 名总统候选人。每名候选人都已经确定自己会投票给谁。一个人只能投票给一个人,也可以投票给自己。
你的目标是制造候选人之间的混乱。为此,你可以禁止一些候选人参加选举。
当某个候选人被淘汰时,所有原本会投票给他的人,会改为投票给“被淘汰者原本会投票给的人”,因为他们信任被淘汰者的判断。
如果被淘汰者原本投票给自己,或者已经处于“未决定”状态,那么所有原本投票给他的人都会变成“未决定”。
也就是说:
- 如果 投票给 , 投票给 ,那么淘汰 后, 会改投 ;
- 如果 投票给 , 投票给自己,那么淘汰 后, 会变成未决定;
- 如果 投票给 ,而 已经未决定,那么淘汰 后, 也会变成未决定。
一名候选人被称为“已决定”,当且仅当他没有被淘汰,且不是未决定状态。
题目要求
对于每个 ,求出如果淘汰 名候选人,最终能够使“已决定”的候选人数最少为多少。
输入格式
输入文件为 politic.in。
第一行包含一个自然数 ,表示候选人数。
接下来 行,第 行包含一个自然数,表示编号为 的候选人会投票给哪一名候选人。
候选人编号从 开始。
输出格式
输出文件为 politic.out。
输出 行。第 行输出一个自然数,表示淘汰 名候选人时,最终“已决定”的候选人数的最小值。
数据范围与限制
- ;
- 对于价值 分的数据,;
- 候选人编号从 开始。
样例
输入
6
2
6
2
5
5
5
输出
3
2
0
0
0
0
样例解释
如果淘汰候选人 ,候选人 和 都会变成未决定,因此只剩下 三名已决定候选人。
如果继续淘汰候选人 ,候选人 会变成未决定,因为 已经未决定。此时只剩下 和 两名已决定候选人。
如果再淘汰候选人 ,就不再剩下任何已决定候选人。