#8254. 排队 普及/提高−

时间限制:1000 ms 内存限制:128 MiB 标准输入输出
题目类型:传统 评测方式:文本比较
上传者: shaobai

题目描述

一家公司有 名员工,编号从 。每个员工要么没有直接上级,要么恰好有一个直接上级,而这个上级是另一名不同编号的员工。如果满足以下条件之一,则称员工 A 是另一名员工 B 的上级:

员工 A 是员工 B 的直接上级 员工 B 有一名直接上级员工 C,而员工 A 是员工 C 的上级 公司不会存在管理循环。也就是说,不会有员工是其/他自己的直接上级。

今天公司要举办一个派对。这涉及将所有的 名员工分成几个小组:每个员工必须属于且仅属于一个小组。此外,在任何一个小组内,不会有两名员工 A 和 B,其中 A 是 B 的上级。

最少需要形成多少个小组?

输入格式

第一行包含一个整数 () —— 员工的数量。

接下来的 行包含整数 ()。每个 表示第 名员工的直接上级。如果 ,那意味着第 名员工没有直接上级。

保证,没有员工的直接上级是他/她自己 ( ≠ )。同时,不会出现管理循环。

输出格式

输出一个整数,表示派对中将要形成的最少小组数。

样例

样例输入

5
-1
1
2
1
-1

样例输出

3

样例解释

提示 对于第一个示例,三个小组就足够了,例如:

员工 1

员工 2 和 4

员工 3 和 5