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