A. Party

题目链接:http://codeforces.com/problemset/problem/115/A

 

题目大意: 每个人都有一个或者没有直属上司,现在想举办一个party,这个party要求参加的人人人平等不存在上下级关系。 问最少要分几组?

 

思路:

其实就是每个人都有一个或者没有父亲节点,我们要让同深度的人组成一个队伍就可以。 即就是找树的最大深度

 

AC代码:

 1 #include <cstdio>
 2 #include <string>
 3 #include <iostream>
 4 #include <algorithm>
 5 #include <string.h>
 6 #include <math.h>
 7  
 8 using namespace std;
 9  
10 const int maxn = 2005;
11  
12 int fa[maxn];
13 int temp = 0;
14  
15 void dfs(int i)
16 {
17     if (i == -1)
18         return ;
19     else
20     {
21         temp++;
22         dfs(fa[i]);
23     }
24 }
25  
26  
27  
28 int main()
29 {
30     int n,sum = 0;
31     cin >> n;
32     for (int i=1;i<=n;i++)
33     {
34         cin >> fa[i];
35     }
36     for (int i=1;i<=n;i++)
37     {
38         temp = 0;
39         dfs(i);
40         sum = max(sum,temp);
41     }
42     printf("%d\n",sum);
43     return 0;
44 }

 

posted @ 2019-07-11 23:35  _Ackerman  阅读(207)  评论(0编辑  收藏  举报