题意:给你一颗树,你可以把这棵树上的一条边的边权变为0,现在让你选一个根,让所有点到这个点的最大距离尽量的小。如果有多个根的最大距离距离相同,输出编号最小的边。 思路:如果没有把边权变为0的操作,这个题实际上是找树的直径的中心。现在有变为0的操作,很容易想到加一维来标记是否已经把某条边的边权变为0。 ...
分类:
其他好文 时间:
2019-08-27 19:19:37
阅读次数:
67
声明 参考课件和讲授来自Accelerator 找树的直径 树的直径定义为一个树中最长的一条链。 1. 一种做法比较显然,我们可以大力 DP,维护出 一个节点向下的最长链F(x)和次长链G(x) ,保证 F,G不出自同一个儿子 ,然后用二者加和来更新答案, 同时更新父亲节点的最长链和次长链 。 2. ...
分类:
其他好文 时间:
2019-08-24 20:19:15
阅读次数:
82
定义: 树的直径指树上距离最远的两点间的距离。 性质: ① 直径两端点一定是两个叶子节点。 ② 距离任意点最远的点一定是直径的一个端点,这个基于贪心求直径方法的正确性可以得出。 ③ 对于两棵树,如果第一棵树直径两端点为(u,v),第二棵树直径两端点为(x,y),用一条边将两棵树连接,那么新树的直径一 ...
分类:
其他好文 时间:
2019-08-13 13:48:04
阅读次数:
138
bzoj luogu 题意可能会很绕 一句话:基环树的直径。 求直径: 对于环上每一个点记录其向它的子树最长路径为$dp_x$ 之后记录环上边长前缀和$ns_i$ dp值为$max_{i,j}dp[i]+sum[i]+dp[j]-sum[j]$ $dp[j]-sum[j]$提出来进单调队列。 O(n ...
分类:
其他好文 时间:
2019-08-10 21:03:02
阅读次数:
129
题目 给定一棵二叉树,你需要计算它的直径长度。一棵二叉树的直径长度是任意两个结点路径长度中的最大值。这条路径可能穿过根结点。 示例 : 给定二叉树 1 / \ 2 3 / \ 4 5 返回?3, 它的长度是路径 [4,2,1,3] 或者?[5,2,1,3]。 注意:两结点之间的路径长度是以它们之间边 ...
分类:
其他好文 时间:
2019-08-08 00:44:10
阅读次数:
171
题目链接 题目含义 就是建一个树,让你求最大直径 下面用分别用DP和DFS的方法 题目代码 #include<iostream> #include<stdio.h> #include<string.h> using namespace std; const int maxn=5e4+7; int n ...
分类:
其他好文 时间:
2019-07-30 18:57:28
阅读次数:
285
题目链接 "传送门" 题意 给你一棵无根树,要你寻找一个根节点使得在将一条边权变为$0$后,离树根最远的点到根节点的距离最小。 思路 本题和求树的直径很像,不过要记得的东西有点多,且状态也很多。 $fi[u][0]$表示在$u$这个结点不删边沿着子树方向能到达的最远距离,$se[u][0]$为第二远 ...
分类:
其他好文 时间:
2019-07-30 12:37:47
阅读次数:
69
树的直径给定一棵树,树中每条边都有一个权值,树中两点之间的距离定义为连接两点的路径边权之和。树中最远的两个节点之间的距离被称 为树的直径,连接这两点的路径被称为树的最长链。后者通常也可称为直径。 树形DP求树的直径(时间复杂度:O(n))设1号节点为根,"N个点N-1条边的无向图"就可以看做“有根树 ...
分类:
其他好文 时间:
2019-07-29 21:46:21
阅读次数:
131
Building and maintaining roads among communities in the far North is an expensive business. With this in mind, the roads are build such that there is ...
分类:
其他好文 时间:
2019-07-28 13:33:51
阅读次数:
116
浅谈树的直径 定义: 树上一节点最大子树的节点数最小; 性质: 1.删除重心后所得的所有子树,节点数不超过原树的1/2,一棵树最多有两个重心; 2.树中所有节点到重心的距离之和最小,如果有两个重心,那么他们距离之和相等; 3.两个树通过一条边合并,新的重心在原树两个重心的路径上; 4.树删除或添加一 ...
分类:
其他好文 时间:
2019-07-28 12:11:29
阅读次数:
732