聚会
题目大意:
有一些树,求深的树的深度
原题
解题思路:
从一个根出发,dfs往下搜
代码:
#include<cstdio>
#include<iostream>
#include<cstring>
using namespace std;
int n,t,g,w,ans,c[2005],head[2005];
struct rec
{int to,next;
}a[2005];
void dfs(int now,int dep)
{ans=max(ans,dep);//求最大for (int i=head[now];i;i=a[i].next)dfs(a[i].to,dep+1);//玩下搜
}
int main()
{scanf("%d",&n);for (int i=1;i<=n;++i){scanf("%d",&t);if (t==-1)//没有父节点{c[++g]=i;continue;}a[++w].to=i;//反过来记录,就可以记录某一个点的子节点a[w].next=head[t];head[t]=w;}for (int i=1;i<=g;++i)dfs(c[i],1);//dfsprintf("%d",ans);//输出
}