100%AC代码,注意下面我数组设1009和2009都会报错,改成n之后就ac了。。
#include <iostream>
#include <algorithm>
#include <vector>
using namespace std;
int n;
int height(vector<vector<int> >&kid, int root){
	if(root < 0 || root >= n)
		return 0;
	if(kid[root].empty())
		return 1;
	int h = 0;
	for(auto x: kid[root])
		h = max(h, height(kid, x));
	return h+1;
}
int main()
{
	int parent, child;
	cin>>n;
	vector<int>indegree(n, 0);
	vector<vector<int> >kid(n, vector<int>());
	for(int i=1; i<n; i++){
		scanf("%d %d", &parent, &child);
		indegree[child]++;
		kid[parent].push_back(child);
	}
	int maxH = 0;
	for(int i = 0; i<n; i++){
		if(indegree[i] == 0)
			maxH = max(maxH, height(kid, i));
	}
	cout<<maxH<<endl;
    return 0;
}