求树的直径

树的直径指的是一棵树相隔最远的两个点的距离。

一开始我傻傻逼逼地用两次DFS做DP求QAQ。

第一次dfs求出某一点的离它最远点的编号及距离是多少,第二远的点编号及距离,它的父亲等一大堆数据。

第二次dfs进行转移。

麻烦的一匹QAQ

后来听大佬所才知道有更好的方法。。。

正题

这个方法好太多了QAQ

操作

一样是两次dfs。

随便找一个点$v$。

第一次dfs找到离这个最远的点$u_1$。

第二次dfs找到离点$u_1$最远的点$u_2$。

$u_1$与$u_2$的距离就是这棵树的直径。。。

证明

自己证去。。。

假设点$v$ 到$u_1u_2$这条路径最近的点为$k$