树的直径(求法以及练习)

何为树的直径,
简单来说其实就是在一棵树上, 距离最远的两个点的距离.
如何求直径

  1. b f s ( d f s ) bfs(dfs) bfs(dfs):第一次 b f s ( d f s ) bfs(dfs) bfs(dfs) :从任意节点出发, 求出到该节点最远的节点 p p p, 然后进行第二次 b f s ( d f s ) bfs(dfs) bfs(dfs), 求出到 p p p最远的节点 q q q, p p p q q q的路径长度即为树的直径.
  2. 树形 d p dp dp: 设 d p [ x ] dp[x] dp[x]表示从节点 x x x出发走向以 x x x为根的子树,能够到达的最远节点的距离, 设集合 y 1 , y 2 , y 3 , . . . . . . y t {y1, y2, y3,......yt} y1,y2,y3,......yt x x x的子节点, e d g e ( x , y ) edge(x,y) edge(x,y)为边的权值大小, 则状态转移方程为 d p [ x ] = max ⁡ 1 < = i < = t d p [ y i ] + e d g e ( x , y i ) dp[x]=\displaystyle\max_{1<=i<=t}{dp[y_i] + edge(x,y_i)} dp[x]=1<=i<=tmaxdp[yi]+edge(x,yi), 接下来我们考虑对于每个节点 x x x求出经过 x x x的最长链的长度 l e n [ x ] len[x] len[x], max ⁡ 1 < = i < = n l e n [ i ] \displaystyle\max_{1<=i<=n}len[i]
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值