最大深度
2025-02-03 10:59:03
发布于:上海
#include<bits/stdc++.h>
using namespace std;
vector<int> g[2010];
int n;//结点数量
int h[2010];
bool a[2020];
int ans;
void dfs(int u,int fa,int depth){
h[u] = depth;
ans = max(ans,h[u]);
for(int son:g[u]){
if(son==fa)continue;
dfs(son,u,depth+1);
}
}
int main(){
cin>>n;
for(int i=1;i<=n;i++){
int fa;
cin>>fa;
if(fa==-1)a[i] = 1;//根节点
else {
g[i].push_back(fa);
g[fa].push_back(i);
}
}
for(int i=1;i<=n;i++){
if(a[i]==1)dfs(i,-1,1);
}
cout<<ans;
return 0;
}
这里空空如也
有帮助,赞一个