题目描述
一棵树有n个节点,其中1号节点为根节点。
输入
第一行是整数n,表示节点数
后面若干行,每行两个整数a b,表示b是a的子节点。
输出
求这棵树的高度(根节点为第1层)
样例输入 复制
5
1 2
1 3
3 4
3 5
样例输出 复制
3
分析:
利用树的静态表示来存储信息,由于每个结点的子结点数不确定,故用vector容器来存储,节省空间。
#include <iostream>
#include <vector>
using namespace std;
struct node{
int deep;
vector<int> child;
}N[100001];
int main()
{
int n;
cin >> n;
for(int i = 1; i <= n; i++){
N[i].child.clear();
}
N[1].deep = 1;
int a, b;
while(cin >> a >> b){
N[a].child.push_back(b);
N[b].deep = N[a].deep + 1;
}
int D = 0;
for(int i = 1; i <= n; i++){
if(D < N[i].deep) D = N[i].deep;
}
cout << D;
return 0;
}