广义串并联图 小记
广义串并联图 小记
定义与性质
定义广义串并联图为不存在与 \(K_4\)(即 \(4\) 个点的完全图)同胚的子图的连通无向图(同胚是指可以通过边的放缩而互相转化的图,即 \((x\leftrightarrow y\leftrightarrow z)\Leftrightarrow (x\leftrightarrow z)\) )。也即不存在四个点使得这个点之间有 \(6\) 条边不交的路径。
广义串并联图性质1:可以通过删除一度点、缩二度点、去除重边使原图变为一个点,这也称作广义串并联图方法。这样我们在缩图过程中,每条边相当于原图的一个子图,我们可以在边或点上维护子图的信息,然后合并。
广义串并联图性质2:对于 \(m\le n+k\) 的一般无向连通图,使用广义串并联图方法可以把图压缩到 \(m\le 3k,n\le 2k\) 级别。这是因为压缩时 \(m-n\) 单调不增,而无法压缩时,每个点度数都 \(\ge 3\),所以 \(2m\ge 3n\),解得 \(m\le 3k,n\le 2k\)。
P6790 [SNOI2020] 生成树
图 \(G\) 是一个广义串并联图。证明:因为仙人掌对于任意四个点只有最多四条不交路径,多一条边后也最多五条,无法达到 \(K_4\) 的六条,故得证。
使用广义串并联图方法。考虑对于每条边 \((u,v)\) 代表的子图,维护 \(f(u,v)\) 表示子图使得 \((u,v)\) 联通的方案数,即生成树数量。维护 \(g(u,v)\) 表示子图使得 \((u,v)\) 不连通的方案数,即子图分成两个生成树,\(u,v\) 各属于其中一个。接下来是合并信息。
- 删除一度点时,对于一度点 \(u\) 和唯一连边 \((u,v)\),\((u,v)\) 一定要连通,所以直接计入答案 \(ans\gets ans\times f(u,v)\)。
- 缩二度点时,对于二度点 \(u\),和连边 \((u,x),(u,y)\)。要使 \((x,y)\) 联通,则 \((u,x),(u,y)\) 都要连通,即 \(f(x,y)=f(u,x)\times f(u,y)\)。要使 \((x,y)\) 不连通,则有一个不连通,且 \(u\) 要连通,所以 \(g(x,y)=f(u,x)\times g(u,y)+g(u,x)\times f(u,y)\)。
- 去除重边时,对于两条边 \((u,v)',(u,v)''\),若 \(u,v\) 连通,则两条边有且只有一个连通,即 \(f(u,v)=f(u,v)'\times g(u,v)''+g(u,v)'\times f(u,v)''\)。若 \(u,v\) 不连通,则两条边都不连通,\(g(u,v)=g(u,v)'\times g(u,v)''\)。
实现时可以用 map 存一个点的连边,写一个 check(x) 函数,检查一个点是否是一度点或二度点,再递归 check。对于重边的判断,我们再加边时就要把重边合并掉,保证图中时时刻刻没有重边。
P10779 BZOJ4316 小 C 的独立集
图 \(G\) 是仙人掌,直接考虑广义串并联图方法。
可以维护 \(f_{u,v,0/1,0/1}\),表示 \(u,v\) 分别选还是不选时 \((u,v)\) 代表子图的答案,但是这样对于一度点没法合并,我们也不能像上一道题那样直接计入答案。
考虑将点和边分别维护信息,\(f_{u,v,0/1,0/1}\) 还是原来的意义,只不过此时不包括 \(u,v\) 的贡献,再维护 \(g_{u,0/1}\) 表示 \(u\) 选还是不选时 \(u\) 点代表的子图的答案。
用上一题的类似方法维护,复杂度 \(O(n\log n)\)。
P4426 [HNOI/AHOI2018] 毒瘤
使用广义串并联图方法后,原图变成 \(m\le 30,n\le 20\) 的图。
用上一题类似的方法维护点和边的方案数,然后暴力枚举所有 \(2^n\) 种染色方案并统计答案即可,计算量 \(n\log n+(30+20)\times 2^{20}\)。
P10044 [CCPC 2023 北京市赛] 最小环
缩图后,\(m\le 4500,n\le 3000\),于是从每个点开始暴力跑最短路即可。

浙公网安备 33010602011771号