圆方树
首先描述一下圆方树:
注:我们把一条边连接两个节点的图也认为是点双连通的。
对于一个无向连通图,对于每个点双连通分量建立一个新的点,新的点作为“方点”,原本的点作为“圆点”,这就是圆方树名字中的“圆方”二字。
然后,在一个由前面的圆点和方点组成的新的图上,给方点和它的点双中的每个点连边,根据点双的性质,这会构成一颗树。
为什么圆方树是“树”
每个点至少属于一个点双,所以圆方树是连通的。
详细的说:本来点双连通分量的放在这里变成了一个类似菊花图的东西,然后点双之间必然互相连通(原图整个连通),所以整个图连通。
两个点(无论是圆是方)之间必然只存在一条简单路径(否则就会合并成一个点双)
圆方树的性质
圆方树是一棵树
满足树的所有性质,并且可以在上面进行树上算法(例如:书上查分、熟练泼粪)
圆方树中每一条简单路径上圆点和方点交错排列
我们所有的边都是通过方点向圆点连边得到,也就是说任何一条边连接一个圆点和一个方点
原图上两点之间的必经点即为圆方树上两点路径上的圆点
点双连通里其他点肯定不是必经的,然而想到达另一个点双所要经过的点是必须的,这也就是那个圆点
圆方树常见用法
都是树了,那就是化图为树(树上算法肯定比图上丰富吧)
别忘了先把Tarjan写对!/doge
例题
APIO2018 铁人两项
题目大意
咕
大题思路
参考代码
SDOI2018 战略游戏
题目大意
咕
大题思路
参考代码
P4320 道路相遇
题目大意
咕
大题思路
参考代码
CF487E Tourists
题目大意
咕