求树的直径

由于之前写了一篇博客,用到了树的直径却没有求。在咕咕咕了n多天之后决定写这篇博客。

树的直径就是树中最长的一条路。

求树的直径我只会一种方法……(据说dalao都会2种

随便找一个点跑一遍最短路,找到离他最远的节点a,然后从a节点继续跑最短路,再次找到一个离a最远的节点b,a和b分别是直径的两个端点,他们之间的距离就是树的直径。

接下来是喜(疯)闻(狂)乐(劝)见(退)的证明环节:

还是之前那个道理,只要我证明不了他是假的,那他就是真的。

假设图长成这个样子……

 

 

我们固定AB为直径。

如果我们选了两个端点的其中一个,那最长的一个一定是另一个。如果最长的不是另一个那这条路径就不是直径了。

如果我们选了C,那也一定会选到直径的端点,因为d一定是最短的,不然他就会是树的直径的一部分了。

选D同理。

 

posted @ 2020-08-17 18:52  lichangjian  阅读(42)  评论(0编辑  收藏  举报