一个广义串并联图可以用数次以下操作被缩为一个点:

判定一个图是不是广义串并联图很简单,如果你发现它的边不是很密集那么它大概率就是一个广义串并联图,比如一个加了一条边的仙人掌([SNOI2020] 生成树):

题目大意.

给出一个加了一条边的仙人掌。求其生成树个数。

n,m5e5

好的!我们直接来维护整体的生成树个数。

我们遇到了很大的困难(悲)。关键在于:与 2 度点相连的两条边不能同时存在,这免不了把三种情况分开讨论。而我们甚至没法把它们分离出来。

考虑 TopTree 的结构,我们来维护每个簇内的生成树个数。每个簇对外表现为一条链接两个点的边,但是实际上它存在一个神必的隐藏结构,我们就是要额外维护这个隐藏结构的生成树个数。

回头考虑缩 2 度点。图中隐藏掉的两条边和一个点就是簇的隐藏结构。

那么,上图的结构什么时候会表现为“这条边表现得像被选了”呢?当且仅当隐藏的两条边都被选了。那么表现为“这条边表现得像没被选”当且仅当隐藏的两条边恰选了一条。

另外还可见“对外边”的被选与否会影响到隐藏结构,于是我们记 fee 被选时,隐藏结构组织为生成树的方案数,ge 反之。上述讨论总结为

{fe=fe1fe2ge=fe1ge2+fe2ge1

容易分析得到

{fe=fe1ge2+fe2ge1ge=ge1ge2

可见这个簇直接消失了,事实上它体现出的是:最终,其他边任意,而这个簇必选。其实就是答案 *= fe 的意思。