思路
求最深一棵树的深度
树的每一层都可以为一组
就是最深一棵树的深度
所以答案是4
#include<iostream>
#include<cstdio>
using namespace std;
int Depth,Sum,Ans,Num,n,m;
int Root[2025],h[2025];
struct whw
{
int w,h ;
}wh[2025];
void hw(int x,int y)
{wh[++Sum]=(whw){y,h[x]};h[x]=Sum;}
void Dfs(int Node)
{
Depth++;//深度
Ans=max(Ans,Depth);
for(int i=h[Node];i;i=wh[i].h)
Dfs(wh[i].w);
Depth--;
}
int main()
{
scanf("%d",&n);
for(int i=1;i<=n;++i)
{
scanf("%d",&m);
if(m==-1)Root[++Sum]=i;//记录为根节点
else hw(m,i);//建边
}
for(int i=1;i<=Sum;++i)
Dfs(Root[i]);//对根节点进行搜索
printf("%d",Ans);
return 0;
}