树形DP-树的直径与重心

本文介绍了如何使用树形动态规划(DP)来求解树的直径和重心。树的直径定义为树中任意两点间的最长路径,可以通过两次广度优先搜索(BFS)或一次树形DP来计算。树的重心则是使得所有子树中最大子树节点数最小的点。树形DP解法中,通过维护每个节点到最远点和次远点的距离,回溯时更新直径。同时,文章还讲解了计算重心时,子树个数和最大子树节点数的概念。
摘要由CSDN通过智能技术生成

直径

定义

给定一颗树 T = ( V , E ) T=\left(V,E\right) T=(V,E) 直径为 m a x l e n ( u , v ) ( u , v ∈ V ) maxlen(u,v)(u,v\in V) maxlen(u,v)(u,vV)
树的直径普遍有两种求法,一个是两边 b f s / d f s bfs/dfs bfs/dfs另一个就是树形DP

树形DP解树的直径


这颗树的直径很明显,就是 ( 8 , 14 ) (8,14) (8,14)
而如何用代码实现呢?

首先令:
f i , 1 f_{i,1} fi,1为点 i i i能到达的远的距离
f i , 2 f_{i,2} fi,2为点 i i i能到达的远的距离

f i , 1 = max ⁡ j ∈ i f j , 1 + l e n (

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值