问题 6796 --派对

6796: 派对★★

时间限制: 3 Sec  内存限制: 256 MB
提交: 19  解决: 14
[提交][状态][命题人:]

题目描述

一家公司有n(1<=n<=2000)名员工,从1人到n人。每个员工要么没有直接经理,要么只有一个直接经理,后者是另一个具有不同编号的员工。如果以下情况中至少有一个是正确的,则称A雇员是B雇员的上级:


  • 雇员A是雇员B的直接经理。
  • 雇员B有一个直接经理雇员C,雇员A是雇员C的上级。


公司没有管理循环。也就是说,不存在一个员工是他自己的直接经理的上级。

今天公司将安排一个聚会。这涉及到将所有n个雇员分为几个组:每个雇员必须恰好属于一个组。此外,在任何一个集团内,不得有两名雇员A和B,满足A是B的上级。

必须组成的组的最小数目是多少?

输入

第一行包含一个整数n(1<=n<=2000),表示员工人数。

接下来n行包含整数pi(1<=pi<=n或pi=-1)。每一个pi表示第i位员工的直属经理。如果pi为-1,则表示第i位员工没有直属经理。

可以保证,没有员工会成为自己的直属经理,同时也不会出现管理循环。

输出

输出一个整数,表示聚会中成立的最少小组数。
样例输入
Copy
5
-1
1
2
1
-1
样例输出
Copy
3

提示

分成三个组,第一组:员工1;第二组:员工2和4;第三组:员工3和5

来源

[提交][状态]