Day6(树上问题)
树的重心
定义:将树上某点删掉后,剩下的子树大小最小。
性质:1)树的重心的每棵子树大小一定小于等于n/2
2)每棵子树大小一定小于等于n/2的点一定是树的重心->最多有2个点为重心且相邻
3)树中所有点到某点的距离和中,到重心的距离和最小。(如果有2个重心,距离和一样)
4)两棵树通过一条边相连成为一棵新树,新树重心一定在原来两棵树的重心的路径上。(证明:调整法)
找重心方法:
1)正常方法
2)调整法,从一个点出发,以该点为根,看儿子子树有没有大于等于n/2的,有就向下走,只到不能走了为止。
CF468D Tree https://www.cnblogs.com/wifimonster/p/10227588.html
AT2673 Tree and Hamilton Pat https://www.cnblogs.com/wifimonster/p/10227595.html
树的直径
定义:最长的简单路径
一棵树的直径可有若干条,这些直径两两相交且所有直径的交集非空
性质:1)从树上一点出发走最长路径,路径终点必为一条直径的一个端点
2)两棵树用一条边合并,新树直径两端顶点一定是原本两树两条直径四个端点中的两个(不考虑多条直径)
3) 对于两条相交的直径,它们不相交部分一定对称
AT2061 Tree Restoring https://www.cnblogs.com/wifimonster/p/10227601.html
[COCI2008]道路重组
遍历序列&树链剖分
对于一个图,遍历过程中经过的点的序列就是它的遍历序,如BFS序、DFS序、欧拉序等等。
我们主要讨论的是欧拉序,DFS序和括号序。
欧拉序:从根节点开始dfs遍历树——在点x时,走到一个未遍历过的儿子,或者儿子已经全部遍历过从x返回到父亲,以此法得到的遍历序列是欧拉序。
DFS序:从根节点开始dfs遍历树,一个节点第一次被遍历到时加入到序列内,以此法得到的遍历序列是DFS序。
括号序:从根节点开始dfs遍历树,一个节点第一次被遍历或遍历完儿子要退出时将其加入到序列内,以此法得到的遍历序列是括号序。
欧拉序:
1 2 5 8 5 9 10 9 11 9 12 9 5 2 6 2 1 3 1 4 7 4 1
DFS序:
1 2 5 8 9 10 11 12 6 3 4 7
括号序:
1 2 5 8 8 9 10 10 11 11 12 12 9 5 6 6 2 3 3 4 7 7 4 1