4022 - 线路重组

题目描述

在繁忙的都市中,交通局决定对城市的公交站点进行一次线路重组实验,以优化乘客的出行体验。

城市有 N 个公交站点(1 \leq N \leq 100,000),编号为 1N。每个站点初始时都有一辆公交车停靠。每个站点,都有规定的目的地,编号为 i 的站点,规定的目的地站点编号为 P_i,公交车从 i 站点开到 P_i 站点,耗时均为 1 小时。所有公交车司机都会在某个整点时刻从某个站点发车,到下一个整点时刻到达目标站点。(如:站点 1 的公交车在 10 点发车,在 11 点到达目标站点 P_1

更具体的说,所有当前整点时刻在编号为 i 的站点的公交车,下一个整点时刻必须到编号为 P_i 的站点停靠。如果有多辆公交车都在编号为 i 的站点,那么下一个整点时刻他们都会到编号为 P_i 的站点停靠。对于两个站点 iji \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 的公交车移动到站点 3。
    • 站点 2 的公交车移动到站点 2,即:该站点的公交车没有发车。
    • 站点 3 的公交车移动到站点 1。
    • 站点 4 的公交车移动到站点 3。
    • 结果:站点 1 有 1 辆车(来自站点 3),站点 2 有 1 辆车(来自站点 2),站点 3 有 2 辆车(来自站点 1 和 4),站点 4 无车。
  • 第二次移动:

    • 站点 1 的公交车(原站点 3)移动到站点 3。
    • 站点 2 的公交车(原站点 2)移动到站点 2,即:该站点的公交车没有发车。
    • 站点 3 的两辆公交车(原站点 1 和 4)移动到站点 1。
    • 站点 4 没有公交车停靠。

无论进行多少次移动,站点 1、2、3 始终有至少一辆公交车,而站点 4 始终无车。因此,输出始终有公交车的站点数量为 3。

数据范围

对于 30\% 的数据,满足 1 \leq N \leq 1000

对于 100\% 的数据,满足 1 \leq N \leq 10^51 \leq P_i \leq N

标签
题目参数
时间限制 1 秒
内存限制 512 MB
提交次数 0
通过人数 0
金币数量 3 枚
难度 基础


上一题 下一题