普通仙人掌
参考文献
奆佬YYB的博客 Orz:https://www.cnblogs.com/cjyyb/p/9098400.html
例题
讲解
构造圆方树
这道题目其实就是在仙人掌上面求最近点对。
先说仙人掌的定义吧,每条边都最多在一个简单环上的图就是仙人掌。(简单环就是一个点双联通分量上点和边的数量是一样的)
好了,那么我们对于一个简单环,建立一个方点(原图上的点叫圆点),将环上的圆点全部连到方点上面,且对于原图中所有存在于点双联通的边全部删去,没有存在于连通分量的边保留,就成了这样:
那么如何证明他一定是个树呢。
两步证明,第一步证明其联通,第二步证明其 ∣ V ∣ − 1 = ∣ E ∣ |V|-1=|E| ∣V∣−1=∣E∣(边的数量是点的数量减一)。
摘自参考文献(注: S T S_T ST为方点, R T R_T RT为圆点):
不在环上的边在圆方树中依然存在,
因此这些边连通性不变;
每个环通过新建方点的方式连成一朵菊花,连通性不变。
因此圆方树是无向连通图。
原图中环的个数为 ∣ E ∣ − ∣ V ∣ + 1 |E|−|V|+1 ∣E∣−∣V∣+1,则
∣ V T ∣ = ∣ S T ∣ + ∣ R T ∣ = ∣ V ∣ + ∣ E ∣ − ∣ V ∣ + 1 = ∣ E ∣ + 1 , ∣ E T ∣ = ∣ E ∣ |V_T|=|S_T|+|R_T|=|V|+|E|−|V|+1=|E|+1,|E_T|=|E| ∣VT∣=∣ST∣+∣RT∣=∣V∣+∣E∣−∣V∣+1=∣E∣+1,∣ET∣=∣E∣
(大小为r 的环在仙人掌和圆方树中都是 r 条边),因此满足 ∣ V T ∣ = ∣ E T ∣ + 1 |V_T|=|E_T|+1 ∣VT∣=∣ET∣+1
圆方树的性质
- 随便找个圆点为根,方点的父亲是圆点。
- 随便取一圆点为根,两个点在不断跳父亲的过程中,在相遇之前会跳动同一个环上且跳到的点都不是环上深度最小的点,那么他们的LCA为方点,反之,他们的LCA为圆点。
- 环中除深度最小的点以外其他点的父亲都是方点。
这道题目的解法
对于这道题目,建立完之后,我们该怎么做呢?
首先确定一个圆点为根,那么整个环中深度最浅的点我们称其为祖先节点 x x x,那么环上其他点与方点的边权就是到