洛谷P3209

这篇博客介绍了如何判断一个包含汉密尔顿回路的无向图是否为平面图。通过玄学定理确定条件,使用哈密尔顿回路转化为多边形,再利用种类并查集来维护边的相交关系。博客提供了具体的思路和代码实现,并建议读者理解图的结构和相交判断逻辑。
摘要由CSDN通过智能技术生成

题意简述

给定一个无向图,保证包含一个汉密尔顿回路(给定这个回路,就不用您找了)。判断这个图是不是平面图(画在平面上没有边相交的图)。多组数据。

数据

输入:
2//两组数据
6 9
1 4
1 5
1 6
2 4
2 5
2 6
3 4
3 5
3 6
1 4 2 5 3 6//到此第一组

5 5
1 2
2 3
3 4
4 5
5 1
1 2 3 4 5//到此第二组
输出:
NO
YES

思路

首先根据玄学定理,m要<= 3 n − 6 3n-6 3n6才能有解(如果不满足直接输出NO),这样m就和n在一个数量级了。

接着我们发现一个哈密尔顿回路珂以直接看成一个多边形,先把回路上的边标记掉,后面就不管了。对于一个其他的边,它珂以连在里面,也珂以连在外面。那个更优呢?
(爆搜)
如果有一个数据结构能够快速的维护边与边之间的香♂蕉&不香♂蕉 的关系,那什么都好办了。这是什么呢??
孔子云:种类并查集。(不知道的去自学。。。)
然后我们枚举边i和j,如果i和j在回路上一定是没问题的,不会相交。只有回路外的边是需要考虑的。我们用种类并查集维护,空间开 2 m 2m 2m i + m i+m i+m i i i是对立关系,是一定要相交的。也就是说,如果 i i i i + m i+m i+m在同一个集合,就是矛盾的,也就不是平面图。
对于一对边,我们珂以通过其在回路上的位置判断是否相交(具体见下面的图和解释)。当然,如果并查集上显示它们在一个集合(即不会相交),那就矛盾了,直接输出 N O NO NO,返回。否则我们就记录一下 i , j i,j i,j的相交关系。(合并 i , j + m i,j+m i,j+m,合并

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值