(吐槽:为什么不能使用‘孩’和‘子’这两个字)

题目链接:https://www.lanqiao.cn/courses/2786/learning/?id=280825

题目解析:典型的树形DP

记dp[i]是以i结点为根的树的最大高度,则状态转移方程:

dp[cur] = max(dp[cur],e[cur].size() + dp[next]);

dp[cur] = 1 (当该结点没有子结点时)

其中e[cur]记录了cur结点的所有子节点,next为其中的一个结点

又1结点高度为0

故答案为dp[1]-1

代码:

//#define local
#include<cstdio>
#include<iostream>
#include<vector>
#define MAXN 100005
typedef long long ll;
using namespace std;
int max(const int &a,const int &b){return a>b?a:b;
}
int n;
vector<int>e[MAXN];
int dp[MAXN]={0};
void dfs(int cur){if(!e[cur].size()){dp[cur]=1;return;}else{for(int i=0;i<e[cur].size();++i){int next=e[cur][i];dfs(next);dp[cur]=max(dp[cur],e[cur].size()+dp[next]);}}
}
int main(){
#ifdef local
freopen("data.in","rb",stdin);
//freopen("data.out","wb",stdout);
#endif
scanf("%d",&n);
for(int i=2;i<=n;++i){int fa;scanf("%d",&fa);e[fa].push_back(i);
}
dfs(1);
printf("%d",dp[1]-1);
return 0;
} 

试题H 左Children右兄弟相关推荐

  1. 第十二届蓝桥杯省赛A组试题:左儿子右兄弟Java

    [问题描述] 对于一棵多叉树,我们可以通过 "左孩子右兄弟" 表示法,将其转化成一棵二叉树.如果我们认为每个结点的子结点是无序的,那么得到的二叉树可能不唯一.换句话说,每个结点可以 ...

  2. 蓝桥杯 左baby右兄弟

    试题: 思路: "左孩子右兄弟"是常见的多叉树转化成二叉树的方法.具体的实现方式是,从第二层最右边的结点开始,将将自己的孩子结点放到左边,左边一位的兄弟放到左边的结点上.对于是多支 ...

  3. strcmp() Anyone? UVA - 11732 左孩子右兄弟Trie/计数

    #include<bits/stdc++.h> using namespace std; #define ll long longconst int maxnode = 4000 * 10 ...

  4. left-child right-sibling representation of tree - 左孩子右兄弟表示树

    left-child right-sibling representation of tree - 左孩子右兄弟表示树 child-sibling representation, left-child ...

  5. 多叉树的二叉树表示法(左儿子右兄弟)

    在二叉树的基础上,我们可以扩展出任意多个叉的树.即,多叉树.然而,此时又面临着另外一个问题: 当孩子结点无限制时,我们并不知道预先要分配多少个属性,且当仅有少数元素拥有多个子节点时,将会造成大量的空间 ...

  6. 3422. 左孩子右兄弟

    对于一棵多叉树,我们可以通过 "左孩子右兄弟" 表示法,将其转化成一棵二叉树. 如果我们认为每个结点的子结点是无序的,那么得到的二叉树可能不唯一. 换句话说,每个结点可以选任意子结 ...

  7. 辅助类BinaryTreeNodeLeftChildRightSibling(左孩子右兄弟,二叉树结点)

    辅助类BinaryTreeNodeLeftChildRightSibling(左孩子右兄弟,二叉树结点) template<typename T> class BinaryTreeNode ...

  8. java实现家庭关系图_左孩子右兄弟二叉树实现家族家谱

    /* Name: 家谱 Description: 本项目对家谱管理进行简单的模拟,以实现查看祖先和子孙个人信息.插入家族成员.删除家族成员等功能. */ #include #include using ...

  9. 小字辈(左子右兄加强版)

    本题给定一个庞大家族的家谱,要请你给出最小一辈的名单. 需要注意的是,家族成员的输入方式,是按照"Left-child Right-sibling"(左儿子 右兄弟)的格式 [敲黑 ...

最新文章

  1. 算法炒房三月亏20多亿!房地产巨头大翻车!
  2. java条件查询excel_[转]EXCEL中的多条件查询(整理)
  3. ckeditor富文本编辑器的基本配置设置:
  4. linux编程技术进程代码,Linux进程通信—信号量 代码实现
  5. [异常解决] ubuntu上安装虚拟机遇到的问题(vmware坑了,virtual-box简单安装,在virtual-box中安装精简版win7)
  6. 机器学习笔记——皮尔逊相关系数
  7. 【NLP】自然语言处理 完整流程
  8. 让193FW显示1440x900还真不容易
  9. python设置函数_在Python中设置函数签名
  10. centos7限制普通用户访问单一目录下的单一文件
  11. 怎么理解汉罗塔问题_小白理解的汉诺塔中的递归问题
  12. 外贸B2C独立站玩不下去?
  13. Ajax.Responders
  14. hash签名 java_java开发区块链只需150行代码
  15. 2008服务器远程桌面连接设置密码,WinServer 2008 远程桌面连接设置
  16. 推荐一个数据库文档生成神器
  17. html5内嵌式格式,如何使用内嵌式引入css样式表
  18. 如何完美解决Sqoop导入导出MySQL数据错位问题
  19. 【Java】据给出的英文短文,作如下统计
  20. flash软件下载安装

热门文章

  1. 一年不到从0到第三,疯读小说还差多久冲第一?
  2. 通过爬取美剧天堂详细介绍Scrapy 框架入门
  3. 038Node.js后端服务处理端口号被占用的解决方案portfinder
  4. 2023年天津农学院专升本专业课考试具体安排及准考证打印时间
  5. word论文写作笔记
  6. 大疆无人机安卓Mobile Sdk开发(一)简单介绍
  7. 程序员到健身教练,江湖再见了
  8. Mac苹果电脑杀毒软件CleanMyMac X
  9. Microsoft Project 开发
  10. 什么?年终奖多发1块钱竟要多缴9.6W的税