#P16033. [Lot2016]politic

[Lot2016]politic

题目背景

NN 名总统候选人。每名候选人都已经确定自己会投票给谁。一个人只能投票给一个人,也可以投票给自己。

你的目标是制造候选人之间的混乱。为此,你可以禁止一些候选人参加选举。

当某个候选人被淘汰时,所有原本会投票给他的人,会改为投票给“被淘汰者原本会投票给的人”,因为他们信任被淘汰者的判断。

如果被淘汰者原本投票给自己,或者已经处于“未决定”状态,那么所有原本投票给他的人都会变成“未决定”。

也就是说:

  • 如果 AA 投票给 BBBB 投票给 CC,那么淘汰 BB 后,AA 会改投 CC
  • 如果 AA 投票给 BBBB 投票给自己,那么淘汰 BB 后,AA 会变成未决定;
  • 如果 AA 投票给 BB,而 BB 已经未决定,那么淘汰 BB 后,AA 也会变成未决定。

一名候选人被称为“已决定”,当且仅当他没有被淘汰,且不是未决定状态。

题目要求

对于每个 K=1,2,,NK=1,2,\ldots,N,求出如果淘汰 KK 名候选人,最终能够使“已决定”的候选人数最少为多少。

输入格式

输入文件为 politic.in

第一行包含一个自然数 NN,表示候选人数。

接下来 NN 行,第 i+1i+1 行包含一个自然数,表示编号为 ii 的候选人会投票给哪一名候选人。

候选人编号从 11 开始。

输出格式

输出文件为 politic.out

输出 NN 行。第 ii 行输出一个自然数,表示淘汰 ii 名候选人时,最终“已决定”的候选人数的最小值。

数据范围与限制

  • 1N10001 \le N \le 1000
  • 对于价值 3030 分的数据,N200N \le 200
  • 候选人编号从 11 开始。

样例

输入

6
2
6
2
5
5
5

输出

3
2
0
0
0
0

样例解释

如果淘汰候选人 55,候选人 4466 都会变成未决定,因此只剩下 1,2,31,2,3 三名已决定候选人。

如果继续淘汰候选人 66,候选人 22 会变成未决定,因为 66 已经未决定。此时只剩下 1133 两名已决定候选人。

如果再淘汰候选人 22,就不再剩下任何已决定候选人。