每棵树最大可能形成的高度为其最深子树的高度(根节点高度为0)+其孩子的数量
#include
#include
using namespace std;
const int N = 1e5 + 10;
vector g[N];
int dfs(int u) {
int ans = 0;
int len = g[u].size();
for (int i = 0; i < g[u].size(); i++) {
ans = max(ans, dfs(g[u][i]) + len);
}
return ans;
}
int main() {
int n;
cin >> n;
for (int i = 2; i <= n; i++) {
int x;
cin >> x;
g[x].push_back(i);
}
int ans = dfs(1);
cout << ans << endl;
return 0;
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)