圆方树

简介

用于解决无向图仙人掌有关的问题
仙人掌:

任意一条边至多只出现在一条简单回路的无向连通图称为仙人掌。

做法

主要通过建立圆点和方点两种点维护仙人掌的形态为树形,于是就有了圆方树
方点:

仙人掌上的环用方点代替,方点数对应环的数量

圆点:

除了方点,原模原样从仙人掌上复制下的点

\(Step1\)
对于一个方点,让其与进入环的节点(称为头结点)即方点和它的父亲的连边,把权值设置为\(0\)
再让这个方点与其它环内节点,即方点和其子结点的连边,把权值设置为这个子结点到方点父亲的最短距离长度,最短路径可以在环内直接求

\(Step2\)
如果两个点的\(LCA\)是圆点,那么他们的距离就是各自到\(LCA\)的距离,与平常的树上距离是一个求法
如果两个点的\(LCA\)是方点,那么某一个点的祖先中的\(LCA\)之前的那个祖先(也就是某个点到\(LCA\)这条链上的\(LCA\)的儿子结点)一定是与\(LCA\)这个方点在同一个环里面的

posted @ 2023-03-30 20:53  Diamondan  阅读(16)  评论(0)    收藏  举报