这道题的意思是,一个公司,有 n 个人。每个人都满足以下两种情况中的一种:没有人直接管理他,或者有且仅有一个人管理他。

对于任意两个人,记为 A 和 B, 我们称 A 是 B 的上司,当且仅当满足下面条件中的一个:

  • A 直接管理 B;
  • A 是 C 的上司,C 直接管理 B.

公司里不可能会有一个“管理圈”,就是说,不会存在 A 是 B 的上司,且 B 是 A 的直接管理者这样的情况。

现在有一个 party, 然后要把这群人分成几组,要求每个人不能和他的上司分在同一组中。

问最少需要几组。

原题地址:http://codeforces.com/problemset/problem/116/C

其实这道题是一个森林模型,答案就是森林中最高的树的高度。

输入数据第一行是这个公司有几个人,从第二行开始每行一个数,这个数表示这个人的直接管理者是谁。例如:

5
-1
1
2
1
-1

输出最少需要分几组,例如上面输入的答案是:

3

原创文章,转载请注明来源:http://euyuil.com/2690/codeforces-116c-party/