什么是换根DP及第一步操作说明

第一步 以任意一点统计

我们规定任意一个点作为根 root,进行树形 DP 的操作。

获取以确定 root 为根的状态下,所有子树的深度 deep\[\]。

具体的,设当前 dfs 的点为 cur,孩子节点是 nex:

  1. 对每个进入 dfs 的 deepcur 初始化为 1,表示当前节点可以有层数为 1 的贡献
  2. 遍历每个每个孩子节点
  • 先递归操作 nex 节点,当递归结束到下一行代码时,表明 deepnex 已经计算好了
  • 将获得的 deepnex 对当前 deepcur 进行松弛。注意松弛时,要累计上 cur 的这层,可得 deepcur = max(deepcur, deepnex + 1);

以上的描述,就是最基础的树形 DP 操作。也是换根 DP 中的第一轮扫描。

下方是假设以点 3 为 root 的搜索结果:

相关推荐
a187927218313 小时前
【算法】动态规划第二篇:双序列 DP 三课——继承、计步与断链
算法·leetcode·动态规划·dp·回溯·暴力·算法讲解
nbsaas-boot7 小时前
多智能体系统的架构边界:任务编排、共享状态与故障隔离设计
人工智能·算法·动态规划
lvwangshu8 小时前
数位 DP 进阶
算法·动态规划
闻缺陷则喜何志丹10 小时前
【动态规划】P10726 [GESP202406 八级] 空间跳跃|普及+
c++·算法·动态规划·洛谷
鹿角片ljp17 小时前
LeetCode 42:接雨水|前后最大值DP
算法·leetcode·动态规划
闻缺陷则喜何志丹2 天前
【动态规划】P3609 [USACO17JAN] Hoof, Paper, Scissor G
c++·算法·动态规划·洛谷
rannn_1112 天前
【力扣hot100】动态规划专题|70、118、198、279、322、139、300、152、416、32
算法·leetcode·动态规划
a187927218312 天前
【算法】动态规划入门:从打家劫舍到状态设计的三堂课
算法·leetcode·动态规划·dp·回溯·暴力
lvwangshu2 天前
P7668 [JOI 2018 Final] 团子制作 / Dango Maker 题解
动态规划·题解·贪心·性质题·思维好题
奶人五毛拉人一块3 天前
动态规划--子数组类型
算法·动态规划·子数组问题