(由于本人太菜所以最近一直在补一些基础算法……) 求树的重心的基本思想就是从每个节点出发分别遍历一遍树,统计max_part,其中能够使得max_part最小的就是树的重心 另外:一棵有根树至多有两个重心,这个结论好像有些题可以用(比如BZOJ4337,不过那个数据太水只有50(什么暴力乱搞 ...
先任选一个节点作为根,将无根树转换成有根树,代码实现是DFS。 以图 的节点i为例,因为是任意选择一个节点做DFS,有以下几种可能: .以节点i为根节点,有三个子树 .以左下方节点为父节点,访问节点i,有两个子树 .以右下方节点为父节点,访问节点i,有两个子树 .以右上方节点为父节点,访问节点i,有两个子树 图 是按第 中方式DFS,删除节点i之后的连通块有三个,两个子树,以及 上方子树 ,从这 ...
2016-09-13 09:05 0 4670 推荐指数:
(由于本人太菜所以最近一直在补一些基础算法……) 求树的重心的基本思想就是从每个节点出发分别遍历一遍树,统计max_part,其中能够使得max_part最小的就是树的重心 另外:一棵有根树至多有两个重心,这个结论好像有些题可以用(比如BZOJ4337,不过那个数据太水只有50(什么暴力乱搞 ...
想了我好长时间。。。 树的重心如果不唯一,则至多有两个,且这两个重心相邻 先假设有两个重心 \(u,v\) 不相邻,考虑它们之间的这条路径,则至少有三个节点(以下的 “它们之间的路径” 都是指 \(u,v\) 之间的路径) 设 \(u\) 的不包含它们之间的这条路径 ...
第1.5版 关于树的重心 有配图 有文字讲解 关于Godfather 有AC代码 文字说明 关于centroid 本人蒟蒻这晚上只写了55pts(以后会有AC代码的) 新增20pts二叉树 手把手教你分析时间复杂度 考场写暴力得省一心 ...
关于树的重心的一些性质都没有理解的很好 在此总结一下。 树的重心的应用 点分治 点分树 动态维护树的重心等等。 关于点分治的复杂度一论 这个其实是套用了 分治的思想 或者是CDQ 的思想 对区间不断的进行递归分治,这个分治可以很快的分出断点mid 而在树上我们就无法快速得出这个mid ...
1.树的直径 树上最长的简单路径即为树的直径。 求树的直径的方法就是在树上任选一点u,求距离点u最远的点y,再求距离点y最远的点s,点y到点s的距离即为树的直径。 View Code 2.树的重心 若有一点,其所有子树中最大子树的节点数最少,则该点 ...
浅谈树的直径 定义: 树上一节点最大子树的节点数最小; 性质: 1.删除重心后所得的所有子树,节点数不超过原树的1/2,一棵树最多有两个重心; 2.树中所有节点到重心的距离之和最小,如果有两个重心,那么他们距离之和相等; 3.两个树通过一条边合并,新的重心在原树两个 ...
树的直径 树的直径,是指树上最长的一条链。 求树的直径有两种方法 \(1.DP\):\(d1[u]\)表示\(u\)到达子树中叶子节点的最长链,\(d2[u]\)表示\(u\)到达子树中叶子节点的次长链,两条链不能有交集,只需要对每个节点做以下更新同时维护最大值最小值即可 这样维护保证 ...
代码定义:树的重心也叫树的质心。对于一棵树n个节点的无根树,找到一个点,使得把树变成以该点为根的有根树时,最大子树的结点数最小。换句话说,删除这个 [1] 点后最大连通块(一定是树)的结点数最小。 性质: 树中所有点到某个点的距离和中,到重心的距离和是最小 ...