在繁忙的都市中,交通局决定对城市的公交站点进行一次线路重组实验,以优化乘客的出行体验。
城市有 N 个公交站点(1 \leq N \leq 100,000),编号为 1 到 N。每个站点初始时都有一辆公交车停靠。每个站点,都有规定的目的地,编号为 i 的站点,规定的目的地站点编号为 P_i,公交车从 i 站点开到 P_i 站点,耗时均为 1 小时。所有公交车司机都会在某个整点时刻从某个站点发车,到下一个整点时刻到达目标站点。(如:站点 1 的公交车在 10 点发车,在 11 点到达目标站点 P_1)
更具体的说,所有当前整点时刻在编号为 i 的站点的公交车,下一个整点时刻必须到编号为 P_i 的站点停靠。如果有多辆公交车都在编号为 i 的站点,那么下一个整点时刻他们都会到编号为 P_i 的站点停靠。对于两个站点 i 和 j 且 i \neq j,可能满足 P_i = P_j,如果 P_i=i 表示位于 i 站点的公交车由于某些原因没有发车。
交通局发现,经过多个整点时刻之后,某些站点在整点时刻,无论如何都会有至少一辆公交车停靠。
为了评估线路的稳定性,请你编程计算这些始终有公交车停靠的站点数量。
第一行包含一个整数 N,表示公交站点的数量。
第二行包含 N 个整数 P_1, P_2, \ldots, P_N,表示每个站点上的公交车移动到的目标站点编号。
输出一个整数,表示在任意的整点时刻,始终会有公交车停靠的站点数量。
4 3 2 1 3
3
10 1 1 3 4 5 6 7 3 9 10
8
15 1 2 3 3 5 6 7 8 9 10 11 12 12 12 15
12
公交站点有 4 个,初始时每个站点有一辆公交车,每个站点的目标站点分别为 P_1=3, P_2=2, P_3=1, P_4=3。
移动过程如下:
第一次移动:
第二次移动:
无论进行多少次移动,站点 1、2、3 始终有至少一辆公交车,而站点 4 始终无车。因此,输出始终有公交车的站点数量为 3。
对于 30\% 的数据,满足 1 \leq N \leq 1000。
对于 100\% 的数据,满足 1 \leq N \leq 10^5,1 \leq P_i \leq N。