题目中每门课至多只有一门直接先修课,并且保证不存在环。因此,所有课程的依赖关系一定构成若干棵树组成的森林。
设一门课程的“深度”为:
多多的学校有 n 门课程,编号从 1 到 n。每门课程可能有一门直接先修课程(或者没有)。如果至少满足以下条件之一,则一门课程 A 是另一门课程 B 的先修课程:
1.课程 A 是课程 B 的直接先修课程;
2.课程 B 有一门直接先修课程 C,且课程 A 是课程 C 的先修课程;
现在,多多需要安排这些课程的排课计划,将所有 n 门课程分配到若干个学期。每个学期中,不能有两门课程 A 和 B 使得 A 是 B 的先修课程。问最少需要多少个学期?
第一行包含整数 n(1≤n≤2000)-----课程数量。
接下来 n 行,每行包含一个整数 pi(1≤pi≤n 或 pi=−1)。第 i 行的 pi 表示第i门课程的直接先修课程。如果 pi 为 −1 ,表示该课程没有先修课程。
输出一个整数,表示最少需要的学期数。
保证没有课程是自己的直接先修课程 (pi=i),也不存在循环依赖。
输入
5
-1
1
2
1
-1
输出
3
说明
最少需要 3 个学期才能以上述约束排完所有课程,其中的一种排课方式如下:
组 1:课程 1,5
组 2:课程 2,4
组 3:课程 3
注:这只是其中的一种排课方式