10月6日 聚会

题目

   分析

    就是并查集然后求一棵树的深度。。。

  代码

#include<bits/stdc++.h>
using namespace std;
int n,a[2005],f[2005],ans,k[2005];
int dfs(int x)
{
    if(k[x]>0) return k[x];
    if(f[x]==0)
    {
      k[x]=1;
      return k[x];
    }
    k[x]=dfs(f[x])+1;
    return k[x];
}
int main()
{
    cin>>n;
    for(int i=1;i<=n;i++)
     cin>>a[i];
    for(int i=1;i<=n;i++)
    {
      if(a[i]!=-1)
       f[i]=a[i];
    }
    for(int i=1;i<=n;i++)
     ans=max(ans,dfs(i));
    cout<<ans;
    return 0;
}

猜你喜欢

转载自www.cnblogs.com/zjzjzj/p/9747717.html