HDU - 5215 Cycle(奇圈和偶圈)

博客探讨了如何在有向图中检测是否存在奇圈和偶圈的问题。通过二分图染色的方法,如果染色成功则表明不存在奇圈。文章指出,当染色过程中遇到已染色节点时,若颜色不同则形成偶圈,相同则形成奇圈。然而,两个奇圈可能组合成一个偶圈,这种情况发生在它们有公共点时。作者通过数学证明,两个奇圈连接形成的环具有偶数边,从而形成偶圈。
摘要由CSDN通过智能技术生成

题目大意:给你一张有向图,问是否存在奇圈和偶圈

解题思路:二分图染色,如果染色成功,证明没有奇圈
给出大神的传送门

染色的时候,如果下一个点已经被染了,说明已经形成了一个圈了,那怎么判断是奇圈还是偶圈

首先,该点如果和下一个点的颜色不同,那么该圈就是偶圈了,反之,如果该点与下一点的颜色相同,该圈就是奇圈了

但是存在一种情况,两个奇圈合成了一个偶圈的,比如平行四边形加上一条对角线,这张图就是奇圈和偶圈的结合了,那么现在的问题就是,怎么判断奇圈里面有偶圈了
如果两个奇圈存在公共点的话,那么这两个奇圈就可以组成一个偶圈了
证明:如果两个奇圈分别有a,b条边,两个圈存在一个公共点,令其有c条公共边,那么把他们合成一个环,环就有a + b - 2 * c条边了,可得,这是个偶圈(画个图就知道,平行四边形加上一条对角线)

#include <cstdio>
#include <cstring>
#pragma comment(linker, "
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值