题目链接:
题目大意: 每个人都有一个或者没有直属上司,现在想举办一个party,这个party要求参加的人人人平等不存在上下级关系。 问最少要分几组?
思路:
其实就是每个人都有一个或者没有父亲节点,我们要让同深度的人组成一个队伍就可以。 即就是找树的最大深度
AC代码:
1 #include2 #include 3 #include 4 #include 5 #include 6 #include 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 else20 {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 }