广义串并联图小计
引入#
对于一个无向图,我们可以通过如下三种操作缩小规模:
-
删一度点:把度数为一的点删掉
-
缩二度点:把度数为二的点缩成一条边
-
叠合重边:把两条重边合并
可以证明,对于满足 的连通图,通过以上操作可以使得新图点数 ,边数 ,且我们仔细分析一下可以发现:
-
新图内的每条边代表了原图一个连通子图,且该子图与剩余部分只有两个点相连,我们称之为 界点
-
新图内的每个点代表了原图若干个连通子图,且每个连通子图与只和该点有边
特别的,如果最终只剩下了一个点,那么称该图为 广义串并联图 。
[SNOI2020] 生成树#
仙人掌加上一条边之后一定是一个广义串并联图,我们考虑维护上述三种操作。
对与每条边,维护 表示:该边代表的连通子图的左右界点连通/不连通的方案数, 表示总答案。
-
删一度点:被删除的点代表的连通块之后就没用了,我们让
-
缩二度点:设该二度点的两条边分别为 ,那么:
-
-
-
叠合重边:设重合的两条边分别为 ,那么
-
-
复杂度可以做到
[HNOI/AHOI2018] 毒瘤#
对于每条边 ,设 代表与边 相连的两个点选的状态是 时,该边对应的连通子图内的方案数, 代表 的状态时 时通过 删一度点 操作挂在 上的子图内的方案数,那么上述三操作对应的 和 的转移是简单的。
最后剩下的图中不超过 个点,我们 枚举然后把系数乘起来就好了。
复杂度 ,跑不满。
[集训队互测2024]最短路求和#
数据范围明示了要用这个东西。
我们先把一度点删掉,现在图里每个点可以代表好几个点。
把剩下的图里,度数 的点称为关键点,那么有不超过 个关键点,两个关键点之间有若干链。
我们先 预处理关键点之间的最短路,考虑剩下的分为同一条链上的最短路和不在同一条链上的最短路,我们枚举一条链上一个点,另一半一定一个前缀是走左边,一个后缀是走右边,且类似莫队暴力维护这个分界点复杂度均摊就是对的。
因此复杂度
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧