树的直径
逐梦起航-带梦飞翔
为了更加长远的快乐!
展开
-
树的直径—求法
先给出树的直径的定义:一棵树中任意两点间的路径叫“链”,最长的链称作树的直径。树的直径并没有明确指明是一个距离还是一段路径,其实两者都可以用“树的直径”来称呼。具体求树的直径我们有两种方法,一种用DP,一种用dfs,它们的时间复杂度都是O(N)。 树形DP法设数组D[i]表示从节点i出发往子树方向走的最长距离,F[i]表示以节点i为转折点的最长链。显然ANS=max{F[i]}。仔...原创 2018-10-03 21:12:54 · 1361 阅读 · 0 评论 -
洛谷3629[APIO2010]巡逻(树的直径)
题目洛谷3629 [APIO2010]巡逻题解树的直径当k=0时,ans=2*(n-1)。当k=1时,显然连接树的直径两端是最优的。当连接两个点x,y时,x-y之间的路径就只被算了一次,ans=2(n-1)-l+1,其中l为树的直径。当k=2时,如果连接的部分没有关联,那ans=2(n-1)-l1+1-l2+1,其中l1,l2为树的直径。如果有相交部分,那么相交部分从原...原创 2018-10-03 21:54:11 · 325 阅读 · 0 评论 -
洛谷1099 & bzoj1999 树网的核(树的直径)(双指针)
题目洛谷1099 树网的核bzoj1999 树网的核(加强版)题解树的直径首先要发现一个结论:在任意一条树的直径上求最小偏心距是一样的!简单证明一下,自己yy吧~这样以后就可以乱搞了,O(N^3)暴力也可以过n=300的数据。直接上O(N)正正解!随便搞出一条直径来,这些点分别是a1,a2,…,at。在直径上一个点al,会有一个最大的ar,使得dist[ar]-dist[a...原创 2018-10-03 22:32:04 · 312 阅读 · 0 评论