问题 B: 树的高度
时间限制: 1 Sec 内存限制: 128 MB
提交: 76 解决: 38
题目描述
一棵树有n个节点,其中1号节点为根节点。
输入
第一行是整数n,表示节点数
后面若干行,每行两个整数a b,表示b是a的子节点。
输出
求这棵树的高度(根节点为第1层)
样例输入
5 1 2 1 3 3 4 3 5
样例输出
3
经验总结
emmm,注意深度在访问到叶子结点时进行比较,若记录深度小于当前深度,就将当前深度赋给记录深度,其他的就没啥啦~~
睡觉去。zZZ
正确代码
#include <cstdio>
#include <vector>
using namespace std;
int deep;
void dfs(vector<int> child[],int index,int level)
{
if(child[index].size()==0)
{
if(level>deep)
deep=level;
return;
}
for(int i=0;i<child[index].size();++i)
{
dfs(child,child[index][i],level+1);
}
}
int main()
{
int n,f,c;
while(~scanf("%d",&n))
{
vector<int> child[n+1];
for(int i=0;i<n-1;++i)
{
scanf("%d%d",&f,&c);
child[f].push_back(c);
}
deep=1;
dfs(child,1,1);
printf("%d\n",deep);
}
return 0;
}