题目描述
一棵树有n个节点,其中1号节点为根节点。
输入
第一行是整数n,表示节点数
后面若干行,每行两个整数a b,表示b是a的子节点。
输出
求这棵树的高度(根节点为第1层)
样例输入
5
1 2
1 3
3 4
3 5
样例输出
3
#include <cstdio>
#include <vector>
#include <queue>
using namespace std;
const int m=10010;
struct node{
int layer;
vector<int> child;
}tree[m];
int high;
void BFS(int root){
high=0;
queue<int> q;
tree[root].layer =1;
q.push(root);
if(tree[root].layer>high) high=tree[root].layer;
while(!q.empty()){
int front=q.front() ;
q.pop();
for(int i=0;i<tree[front].child.size();i++){
int child=tree[front].child[i];
tree[child].layer =tree[front].layer +1;
q.push(child);
if(tree[child].layer>high) high=tree[child].layer;
}
}
}
int main(){
int n,a,b;
while(scanf("%d",&n)!=EOF){
for(int i=0;i<n-1;i++){
scanf("%d %d",&a,&b);
tree[a].child.push_back(b) ;
//if(b==n) break;
}
BFS(1);
printf("%d\n",high);
}
return 0;
}