#P1070. 聚会

聚会

题目描述

一家公司有 n(1n2×103)n(1\le n\le2\times10^3) 名员工,从第 11 人到第 nn 人。每个员工要么没有直接经理,要么只有一个直接经理,后者是另一个具有不同编号的员工。如果以下情况中至少有一个是正确的,则称 A 雇员是 B 雇员的上级:

雇员 A 是雇员 B 的直接经理。

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

公司不存在管理循环,也就是说,不存在一个员工是他/她自己的上级。

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

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

输入格式

第一行包含整数 n n ( 1n20001 \leq n \leq 2000 ) — 员工人数。

接下来的 nn 行包含整数 pip_i (1pin1 \leq p_i \leq npi=1p_i=-1)。每个 pip_i 表示第 ii 个员工的直接上级。如果 pi=1p_i=-1,则表示第 ii 个员工没有直接上级。

保证不会出现管理循环。

输出格式

输出一个整数,表示聚会中将形成的最少组数。

样例 #1

样例输入 #1

5
-1
1
2
1
-1

样例输出 #1

3

提示

对于第一个例子,三个组就足够了,例如:

  • 员工 1
  • 员工 2 和 4
  • 员工 3 和 5