题目描述
现在有一棵合法的二叉树,树的节点都是用数字表示,现在给定这棵树上所有的父子关系,求这棵树的高度
输入描述:
输入的第一行表示节点的个数n(1 ≤ n ≤ 1000,节点的编号为0到n-1)组成,
下面是n-1行,每行有两个整数,第一个数表示父节点的编号,第二个数表示子节点的编号
输出描述:
输出树的高度,为一个整数
示例1
输入
5
0 1
0 2
1 3
1 4

输出
3

#include<cstdio>
#include<cstring>
#include<algorithm>
#include<vector>
#include<string>
#include<cctype>
#include<iostream>
using namespace std;
vector<int> G[1005];
int n;
int dfs(int x){
	if(G[x].size()==0) return 1;
	else if(G[x].size()==1) return 1 + dfs(G[x][0]);
	else return 1 + max(dfs(G[x][0]), dfs(G[x][1]));	
}

int main(){
	
	scanf("%d",&n);
	
	int deg[1005];
	memset(deg,-1,sizeof(deg));
	int u,v;
	for(int i=0;i<n-1;i++){
		scanf("%d%d",&u,&v);
		G[u].push_back(v);
		deg[v]=u;
	}
	int root;
	for(int i=0;i<n;i++){
		if(deg[i] == -1){
			root = i;
			break;
		}
	}

	cout<<dfs(root)<<endl;
	return 0;
}