题目描述
一棵树有n个节点,其中1号节点为根节点。
输入
第一行是整数n,表示节点数
后面若干行,每行两个整数a b,表示b是a的子节点。
输出
求这棵树的高度(根节点为第1层)
样例输入
5
1 2
1 3
3 4
3 5
样例输出
3
思路
先用一个二维数组记录每一个分支,再用dfs即可。
代码
#include<bits/stdc++.h>
using namespace std;
int maxn=0;
vector<int>node[1010];
void dfs(int root,int step)
{
if(node[root].size()==0)
{
if(maxn<step)//注意这个step没有算上最后一个节点,所以最后的深度为step+1
maxn=step;
return;
}
for(int i=0;i<node[root].size();i++)
dfs(node[root][i],step+1);
}
int main(int root,int step)
{
int n,a,b;
cin>>n;
while(cin>>a>>b)
{
node[a].push_back(b);
}
for(int i=1;i<=n;i++)
dfs(1,0);
cout<<maxn+1<<endl;
}