CF115A.Party

传统题 时间 2000 ms 内存 256 MiB 4 尝试 1 已通过 1 标签

Party

题目描述

一家公司有 nn 名员工,编号从 11nn。每位员工要么没有直属经理,要么有且仅有一位直属经理,这位经理是另一位编号不同的员工。若满足以下至少一条,则称员工 AA 是员工 BB 的上级:

  • 员工 AA 是员工 BB 的直属经理;
  • 员工 BB 有一位直属经理 CC,且员工 AA 是员工 CC 的上级。

公司中不会出现管理层级的环路。也就是说,不存在某位员工是其直属经理的上级。

今天公司要举办一场聚会,需要将所有 nn 名员工分成若干组:每位员工必须且只能属于一组。此外,在同一组内,不能存在两位员工 AABB,使得 AABB 的上级。

请问,最少需要分成多少组?

输入格式

第一行包含一个整数 nn1n20001 \leq n \leq 2000),表示员工人数。

接下来的 nn 行,每行包含一个整数 pip_i1pin1 \leq p_i \leq npi=1p_i = -1)。每个 pip_i 表示第 ii 位员工的直属经理编号。如果 pi=1p_i = -1,表示第 ii 位员工没有直属经理。

保证没有员工是自己的直属经理(即 piip_i \neq i),且不会出现管理层级的环路。

输出格式

输出一个整数,表示聚会分组的最小组数。

说明/提示

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

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

由 ChatGPT 4.1 翻译

样例

5
-1
1
2
1
-1
3

在线编程 IDE

建议全屏模式获得最佳体验