CF1537F 题解
一道结论型的图论题。
约定:
偶环:节点个数为偶数的环使得任意不相同两点之间有且仅有 2 条简单路径的环。
奇环:节点个数为奇数的环使得任意不相同两点之间有且仅有 2 条简单路径的环。
令点 的权值为 ,有 ,其中 为题目给出的。
称一个图为好的当且仅当这张图是否可以在有限步操作中,使得每个节点满足 。
基础结论:
结论 1:对于一个偶环,这个偶环是好的当且仅当将其黑白染色后所有黑点的权值和等于所有白点的权值和。
证明:
染色后每个黑点想要使自己点权变化那么左右的其中一个白点也会变化,所以黑、白点权值之和的差值不变。要使得最后权值都为 0,那么黑、白点权值之和必须相等。
对于这个结论,还有一个小推广:该结论对于所有二分图都有效,证明过程类似。
结论 2:对于一个奇环,这个奇环是好的当且仅当其点权之和是偶数。
证明:
对于一个奇环,两点间的两条路径长度一定一个是奇数一个是偶数,那么如果有两个点要同时操作,就找到长度为奇数的那条路然后一加一减即可,如图:
这个结论对奇环上挂了树同样适用。
一般性的结论
前面考虑了一个环的情况,现在考虑更一般性的,也就是两个环,或环上挂了树。
两个环有以下三种大致状态:
下文只考虑第三种,事实上这三种不同形态推导结论的方式是类似的。
1. 两个偶环相接
如图:
由于两个偶环接在一起是一个二分图,根据基础结论 1 的小推广,该图可以视作偶环。
2. 偶环与奇环相接
如图:
考虑一种最基础的,这张图上只有两个点的权值为 1。
如果这两个点都在偶环上,那么可以从如下路线一加一减,得到答案:
如果都在奇环上,那么直接就是结论 2。
如果一个在偶环上,一个在奇环上,那么把中间那条边删掉对答案没有影响,所以依旧是结论 2。
综上所述,偶环与奇环相接的情况就相当于奇环。
3. 奇环与奇环相接
如图:
依旧考虑这张图上只有两个点的权值为 1。
如果两个点在同一个奇环上,那么就是结论 2。
否则,如下图:
由于环大小是奇数,所以将中间那条边经过一个奇环但不走中间的边的路径长度是偶数的,而经过中间的边路径长度是奇数(也就是 1),所以这两点之间一定有一条长度为奇数的路径,在这条路径上操作即可,如图:
综上所述,两个奇环相接的情况就相当于奇环。
4. 环上挂树
此时我们只要考虑奇环的情况,因为偶环在此时是二分图。
如图:
我们可以从树的叶子节点开始,不断向上进行修改,将所有权值转移至环上,然后就是结论 2。
综上所述,如果一个图中包含奇环,那么就可以视作奇环,否则视作偶环。
实现
用 Tarjan
求一个生成树,然后对于每条返祖边,看构成的环是否是奇环。或者直接黑白染色判断是否是二分图,如果是二分图就不存在奇环。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)