题解:AT_abc378_f [ABC378F] Add One Edge 2
题目让我们求一棵给定的树有多少环上点度数均为 \(3\) 的基环树。
容易想到,新添加的环连接的两个节点一定都是度数为 \(2\) 的点,且这两个点之间所有节点的度数均为 \(3\)。
所以我们可以找到每一个由度数为 \(3\) 的点组成的连通块,并对于每一个连通块找到它的边缘有几个度数为 \(2\) 的点。
设度数为 \(2\) 的点的个数为 \(sum\),那么该连通块能够产生的贡献显然就是这 \(sum\) 个点中选任意两个点的方案数,显然就是 \(sum\cdot(sum-1)\over 2\)。
找连通块的时候我们用一个 \(vis\) 数组标记已经找过的点,每次只对度数为 \(3\) 且之前没被标记的点进行搜索,这样可以保证不重不漏。