LuoguP3209 [HNOI2010] 平面图判定

Description

判定一个图是否为平面图的问题是图论中的一个重要问题。现在假设你要判定的是一类特殊的图是否是平面图,图中存在一个包含所有顶点的环,即存在哈密顿回路。

对于一个无向图 $G=(V,E)$,如果能够做到把它画在同一个平面上,使得 $\forall (a,b)(c,d)$,$a,b,c,d$ 两两不等的情况下,边 $(a,b)$ 和边 $(c,d)$ 没有交点,则称 $G$ 是平面图。

哈密顿回路指的是:在一个有 $n$ 个点的图中,一条从点 $x$ 出发,最后回到点 $x$,并且除点 $x$ 外所有点都只出现一次,总长度为 $n$ 的路径。

Solution

简单给出平面图的定义:无向图画在同一个平面上,任意两边没有交点。

对于每一条边,只有两种情况:

  1. 在哈密顿回路上,那么这条边无需其他判断。
  2. 在哈密顿回路外/里,那么这条边有两种选择:要么在外部,要么在里面。

由于第二种情况的两种选择,以及平面图的限制,这就转化为了个经典的 2-SAT 问题。

image-20210301204343887

显然如果边 $(x,y)$ 与边 $(u,v)$ 都在环内时,这个图就不是平面图。

那么我们只要顺次枚举两条边,判断是否有限制即可。

核心代码:

然而发现这种方法的建图复杂度会高达 $O(M^2)$,对于 $1\leq M\leq 10^4$ 的本题是完全不能通过的。

那么接下来就要利用到平面图的一个重要性质:$m\leq 3n+6$。

具体性质的证明,楼上楼下都解释得很清楚了,这里就不再赘述。

Code

暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇