题目描述
背景
若能将无向图 画在平面上使得任意两条无重合顶点的边不相交,则称 是平面图
判定一个图是否为平面图的问题是图论中的一个重要问题
现在假设你要判定的是一类特殊的图,图中存在一个包含所有顶点的环,即存在哈密顿回路
输入
输入文件的第一行是一个正整数 ,表示数据组数 (每组数据描述一个需要判定的图)。
接下来从输入文件第二行开始有 组数据
每组数据的第一行是用空格隔开的两个正整数 和 ,分别表示对应图的顶点数和边数
紧接着的 行,每行是用空格隔开的两个正整数 和,表示对应图的一条边
输入的数据保证所有边仅出现一次
每组数据的最后一行是用空格隔开的 个正整数,从左到右表示对应图中的一个哈密顿回路
即对任意 有 且对任意 有 及
数据范围
输入的数据保证 的数据满足
输出
包含 行,若输入文件的第 组数据所对应图是平面图,则在第 行输出,否则在第 行输出,注意均为大写字母
思路
好了,看完了巨长无比的题面,我们的第一想法肯定是画个图看看

对于这张图, 显然是一个畸形的哈密顿回路
而 , , 这三条边并没有与其它边相交
所以…这是一个符合题意的图!(惊喜

而对于第二张图,无论这几条边怎么组合,都不可能不相交(不信你试试
所以这张图就是一个
OVER
但是我们该怎么用程序实现呢
容易发现,题目给了一个非常有用的限制条件
“哈密顿回路”
一个环会将平面分成两个部分:环内和环外~~(废话~~
因此,一条边的位置也只有3种可能:环内,环上,环外
除去组成环的边,我们就只剩下了两种可能
这™不就是2-SAT的定义吗…
好
我们想一下怎么建图
首先我们定义两条边是不相容的(随手起的
当且仅当它们不可能同为以上两种可能的一种
举个🌰


