#P1070. 聚会
聚会
题目描述
一家公司有 名员工,从第 人到第 人。每个员工要么没有直接经理,要么只有一个直接经理,后者是另一个具有不同编号的员工。如果以下情况中至少有一个是正确的,则称 A 雇员是 B 雇员的上级:
雇员 A 是雇员 B 的直接经理。
雇员 B 有一个直接经理雇员 C,雇员 A 是雇员 C 的上级。
公司不存在管理循环,也就是说,不存在一个员工是他/她自己的上级。
今天公司将安排一个聚会。这涉及到将所有 个雇员分为几个组:每个雇员必须恰好属于一个组。此外,在任何一个集团内,不得有两名雇员 A 和 B,满足 A 是 B 的上级。
必须组成的组的最小数目是多少?
输入格式
第一行包含整数 ( ) — 员工人数。
接下来的 行包含整数 ( 或 )。每个 表示第 个员工的直接上级。如果 ,则表示第 个员工没有直接上级。
保证不会出现管理循环。
输出格式
输出一个整数,表示聚会中将形成的最少组数。
样例 #1
样例输入 #1
5
-1
1
2
1
-1
样例输出 #1
3
提示
对于第一个例子,三个组就足够了,例如:
- 员工 1
- 员工 2 和 4
- 员工 3 和 5