yangyangbk


私信TA

用户名:dotcpp0659776

访问量:60

签 名:

等  级
排  名 59325
经  验 228
参赛次数 0
文章发表 1
年  龄 0
在职情况 学生
学  校 长沙学院
专  业

  自我简介:

TA的其他文章

C++递归求解
浏览:41

解题思路:

注意事项:

参考代码:

#include <iostream>

#include <vector>

using namespace std;

vector<int> f[100050];

int dfs(int node) {//node为每一层下标数,从第一层开始遍历

int count = 0;

if (f[node].size() == 0) return 0;//没有子节点,返回

for (int i = 0; i < f[node].size(); i++) {

count = max(count, dfs(f[node][i]));//当前节点和所遍历节点的最大深度

}

return count + f[node].size();//返回当前节点深度加上已经积累的最大深度

}

int main() {

int n;

int t;

cin >> n;

for (int i = 2; i <= n; i++) {

cin >> t;

f[t].push_back(i);//每一层的子节点号码

}

cout << dfs(1);

return 0;

}


 

0.0分

1 人评分

  评论区

  • «
  • »