最深的二叉树肯定是从第一个点出发的,从根出发
#include<iostream>
#include<map>
using namespace std;
int main()
{
int n,i,j,k1,k2,max=0;
cin>>n;
map<int, int> a[1000];
for(i=1;i<=n;i++)
{
cin>>k1>>k2;
if(k1!=0)
{
a[i][k1]=1;
a[k1][i]=1;
}
if(k2!=0)
{
a[i][k2]=1;
a[k2][i]=1;
}
}
int k;
for(i=1;i<=n;i++)
{
for(j=1;j<=n;j++)
{
if(i!=j)
{
for(k=1;k<n;k++)
{
if(k!=i && k!=j && a[i][k]+a[k][j]>a[i][j])
{
a[i][j]=a[i][k]+a[k][j];
}
}
}
}
}
for(j=1;j<=n;j++)
{
if(a[1][j]>max)
{
max=a[1][j];
}
}
cout<<max+1;
return 0;
}