树论相关

树的重心

定义

树上一点 \(x\),令 \(x\) 的最大子树的节点数最小

性质:

  • 对于删除重心后所得的所有子树,最大节点数不超过原树的 \(\frac{1}{2}\)
  • 一棵树最多只有两个重心,这两个重心相邻
  • 这两个重心相邻时,记深度较浅的节点为 \(u\) ,深度较深的节点为 \(v\),则 \(size_1-size_v=size_v\)
  • 树中所有节点到重心的距离和最小,如果有两个重心,那么树上所有节点分别到这两个重心的距离和相等
  • 两棵树用一条边合并成一棵树,新的重心在原树两个重心的路径上
  • 在树上删除 \(/\) 添加一个叶子节点,重心最多只会移动一条边

树的直径

定义

树上两点间的最长路径

性质

  • 直径两端点一定会是两个叶子节点
  • 对于一棵树,对于任意一条直径 \(Path(s\to t)\) 和任意一点 \(x\)\(s\)\(t\) 一定是距离 \(x\) 最远的点之一
  • 对于两棵树,如果树 \(T_1\) 直径两端点为 \((u,v)\),树 \(T_2\) 直径两端点为 \((x,y)\),用一条边连接两棵树 \(T_1,T_2\),得到的新树直径两端点 \(\in {x,y,u,v}\)
  • 对于一棵树,如果在一个点下接一个叶子节点,最多只会改变直径的一个端点
  • 若一棵树存在多条直径,则这些直径交于一点并且交点就为这些直径的中点

最小生成树

定义

\(G\) 的边权之和最小的生成树 \(T\)

性质

  • 把所有边权相同的视为边组,每一组边组在最小生成树的条数是固定的,对连通性的贡献也是固定的
  • 换掉一条边并且保证结果是树记为一次操作,树 \(A\)\(B\) 是无向图的两个生成树,则 \(A\) 可以通过若干次操作变成 \(B\)(对最小生成树也成立)
  • 如果无向图的边权都不相同,则最小生成树是唯一的
  • 如果一棵生成树,任何边都在某棵最小生成树上,则它不一定是最小生成树
  • 对于任意正确加边方案(即不存在环),加完小于某权值的所有边后当前边集的连通性是一样的

杂项

判断树上两条路径是否有公共点:设给出的两条路径为 \(\mathrm{Path}(a\to b),\mathrm{Path}(c\to d)\)。若 \(\mathrm{Path}(a\to b)\)\(\mathrm{Path}(c\to d)\) 有交,仅当 \(\mathrm{lca}(a,b)\in\mathrm{Path}(c,d)\vee \mathrm{lca}(c,d)\in \mathrm{Path}(a,b)\)

判断一个点是否在一条路径上:设给出的路径为 \(\mathrm{Path}(x,y)\),给出的点为 \(z\)。若 \(z\in \mathrm{Path(x,y)}\),仅当 \(\mathrm{dis}(x,z)+\mathrm{dis}(z,y)=\mathrm{dis}(x,y)\)

\(n\) 个点选 \(m\) 个点作为根的有标号森林数为:\(C_n^m\times n^{n-1-m}\times m\)。使用 \(\text{Prufer}\) 序列证明:在森林中加入一个虚点(方点),点权设为 \(\infty\),则这 \(n+1\) 个点的 \(\text{Prufer}\) 序列长度为 \(n-1\),且 \(\text{Prufer}\) 序列中最后 \(1\sim k\) 项都是这个方点,倒数第 \(k+1\) 项是选中的 \(k\) 个根中的任意一点,第 \(1\sim n-k-1\) 项只要 \(\in [1,n]\) 即可,故总方案数为上式。

posted @ 2020-09-22 20:24  tommymio  阅读(186)  评论(0)    收藏  举报