题目描述
一棵树有n个节点,其中1号节点为根节点。
输入
第一行是整数n,表示节点数
后面若干行,每行两个整数a b,表示b是a的子节点。
输出
求这棵树的高度(根节点为第1层)
样例输入
5 1 2 1 3 3 4 3 5
样例输出
3
#include<stdio.h>
int father[10000]={0};
int main(){
int n;
while(scanf("%d",&n)!=EOF){
int f,s;
father[1]=1;
for(int i=0;i<n-1;i++)
{
scanf("%d %d",&f,&s);
if(i!=n-2)getchar();
father[s]=f;
}
int max=1,j;
for(int i=0;i<n;i++)
{
int temp=1;
j=i;
while(father[j]!=j){
j=father[j];
temp++;
}
if(temp>max)max=temp;
}
printf("%d\n",max);
}
return 0;
}
注:并查集的思想