题目传送门
分析:
树上问题放仙人掌上考已经很离谱了,仙人掌上加一条边是什么烂玩意??
本题会反复运用仙人掌的一个公式:
点-边+环=1
我们先判断一下\(G\)是否是一棵仙人掌,如果是就直接把环的大小乘起来就好了
如果不是,我们就要想办法找到哪一条边在作怪
先找点双连通分量,肯定会形成若干个环和一个奇奇怪怪的点双
单独处理这一个奇怪的点双,作为子图\(G'\)处理
子图\(G'\)大概会出现两种情况,一种是一个大环上面串很多小环,另一种是两个环共用一条边(样例),但其实两者本质相同
胡乱分析一下,如果一条边的一个端点度数为3,那么这条边就很有嫌疑
我们把所有这种边放到一起,随机排序(数据挺水可以不用2333)后,暴力删每一条边,检验剩下的图是不是仙人掌
随机之后找到某一条满足条件的边\(E\),期望次数是很小的(玄学)
剩下的图缩点之后加上\(E\),明显是一个环,而环上每一条边与\(E\)等效
一顿加加减减就好了。。。
剩下的情况就是缩点后的环并不删边,我们删去本来被缩点的某一个小环上的两条边,也会形成生成树
这种情况在缩点时顺便处理一下
一顿加加减减就好了。。。
代码写起来恶心,细节很多,讲不清楚,不理解的看看代码吧。。。
#include
#include
#include
#include
#include
#include
#include