蓝桥杯2021年第十二届省赛真题-左孩子右兄弟 - C语言网 (dotcpp.com)https://www.dotcpp.com/oj/problem2606.html总的来说就是 每个节点的数=儿子的数+这一层节点的个数;
(没有儿子的就等于这一层节点的个数)
样例举例:邻接表如下
| 1 | 2 | 3 | 4 |
| 2 | 5 | ||
| 3 | |||
| 4 | |||
| 5 |
从1开始--- 返回1+ 3(1的儿子个数)
从2开始-- 返回0+1(2的儿子个数)
从5开始--返回0
从3开始-- 返回0
从4开始-- 返回0
故一个节点返回的是 儿子返回的数中的最大数+儿子的个数;
最后得出根节点的数;
#includeusing namespace std; vector G[100003]; int dfs(int u,int fa) { if(u==fa)return 1; int dis=0; for(int i=0;i >n; for(int i=2;i<=n;i++){ int x;cin>>x; G[x].push_back(i); } cout<



