2450 Problem B 树的高度

问题 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;
}

猜你喜欢

转载自blog.csdn.net/a845717607/article/details/81517491