直径
定义
给定一颗树 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,v∈V)
树的直径普遍有两种求法,一个是两边 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 (