#loj4302. 「ROIR 2019 Day2」探险队

    ID: 10290 传统题 1000ms 512MiB 尝试: 0 已通过: 0 难度: (无) 上传者: 标签>2019ROIR动态规划 DP树形 DP基环树普及+/提高−

「ROIR 2019 Day2」探险队

[AdditionalFile4302.zip](file://AdditionalFile4302.zip?type=additional_file)

#4302. 「ROIR 2019 Day2」探险队

标签: 传统 | 时间限制: 1000 ms | 内存限制: 512 MiB |

题目描述

译自 ROI Regional 2019 Day2 T3. Экспедиция

计划派遣一支探险队前往邻近的星系。共有 nn 名候选人,编号从 11nn,需要从中选出探险队成员。组织者希望尽可能多地选出候选人参加探险。

在候选人中进行了一次调查,每个人可以指出一个他不愿意与之一起参加探险的候选人。对于第 ii 个候选人,调查结果是一个整数 aia_{i},表示他不愿意与之一起参加探险的候选人的编号;如果 ii 号候选人愿意与任何人一起参加探险,则 ai=1a_{i} = -1

现在,组织者需要决定谁将参加探险队。决定是这样的:如果某个候选人 ii 被选中,并且 ai1a_{i} \neq -1,那么编号为 aia_{i} 的候选人不能被选中。组织者希望选出最多数量的探险队成员。

编写一个程序,根据给定的候选人调查结果,确定可以派遣的最大候选人数。

输入格式

第一行输入包含一个整数 nn (1n3105)(1 \leq n \leq 3\cdot 10^5),表示候选人数。

接下来的 nn 行中,每行包含一个整数 aia_{i}ai=1a_{i} = -11ain,aii1 \leq a_{i} \leq n, a_{i} \neq i),表示第 ii 个候选人的调查结果。

输出格式

输出一个整数,表示可以派遣的最大候选人数。

样例 1

输入

4
2
4
2
1

输出

2

样例 2

输入

3
2
-1
2

输出

2

数据范围与提示

详细子任务附加限制及分值如下表所示。

子任务 分值 附加限制 子任务依赖
11 1919 n20n \leq 20
22 1010 a1=1a_{1} = -1,对于 i>1i > 1ai=i1a_{i} = i-1
33 1515 对于所有 iiai<ia_{i} < i 22
44 1313 1n20001 \leq n \leq 2000 11
55 4343 1n31051 \leq n \leq 3\cdot 10^5 1,2,3,41,2,3,4