题目传送门


分析

首先一张图是平面图的必要条件为 \(m\leq 3*n-6\),

然后考虑到这题的图存在哈密尔顿回路,也就是说非环边因为跨立形成奇环即为无解

那么直接拆点跑2-SAT就可以了


代码

#include <cstdio>
#include <cctype>
#define rr register
using namespace std;
const int N=1211; struct node{int y,next;}e[N*N];
int dfn[N],low[N],v[N],stac[N],col[N],rk[N],as[N];
int et,flag,tot,Top,cnt,n,m,X[N*10],Y[N*10];
inline signed iut(){
rr int ans=0; rr char c=getchar();
while (!isdigit(c)) c=getchar();
while (isdigit(c)) ans=(ans<<3)+(ans<<1)+(c^48),c=getchar();
return ans;
}
inline signed min(int a,int b){return a<b?a:b;}
inline void tarjan(int x){
dfn[x]=low[x]=++tot,v[x]=1,stac[++Top]=x;
for (rr int i=as[x];i;i=e[i].next)
if (!dfn[e[i].y]){
tarjan(e[i].y);
low[x]=min(low[x],low[e[i].y]);
}else if (v[e[i].y])
low[x]=min(low[x],dfn[e[i].y]);
if (dfn[x]==low[x]){
rr int y; ++cnt;
do{
y=stac[Top--],v[y]=0,
col[y]=cnt;
}while (y!=x);
}
}
inline void add(int x,int y){e[++et]=(node){y,as[x]},as[x]=et;}
signed main(){
for (rr int T=iut();T;--T){
n=iut(),m=iut(),flag=et=1,tot=0;
for (rr int i=1;i<=m;++i) X[i]=iut(),Y[i]=iut();
for (rr int i=1;i<=n;++i) rk[iut()]=i;
if (m>3*n-6) {puts("NO"); continue;}
for (rr int i=1;i<=m;++i){
X[i]=rk[X[i]],Y[i]=rk[Y[i]];
if (X[i]>Y[i]) X[i]^=Y[i],Y[i]^=X[i],X[i]^=Y[i];
if (X[i]+1==Y[i]||(X[i]==1&&Y[i]==n)) v[i]=1;
}
for (rr int i=1;i<m;++i) if (!v[i])
for (rr int j=i+1;j<=m;++j) if (!v[j])
if ((X[i]<X[j]&&X[j]<Y[i]&&Y[i]<Y[j])||(X[j]<X[i]&&X[i]<Y[j]&&Y[j]<Y[i]))
add(i,j+m),add(i+m,j),add(j,i+m),add(j+m,i);
for (rr int i=1;i<=m;++i) v[i]=0;
for (rr int i=1;i<=m*2;++i) if (!dfn[i]) tarjan(i);
for (rr int i=1;i<=m;++i)
if (col[i]==col[i+m]) {puts("NO"),flag=0; break;}
if (flag) puts("YES");
for (rr int i=1;i<=m*2;++i) as[i]=col[i]=dfn[i]=low[i]=0;
}
return 0;
}

#2-SAT,平面图#洛谷 3209 [HNOI2010] 平面图判定的更多相关文章

  1. 洛谷P3209 [HNOI2010]平面图判定(2-SAT)

    传送门 看到哈密顿回路就被吓傻了……结果没有好好考虑性质…… 首先,平面图有个性质:边数小于等于$3n-6$(我也不知道为啥),边数大于这个的直接pass 然后考虑原图,先把哈密顿回路单独摘出来,就是 ...

  2. 洛谷 P3209 [HNOI2010] 平面图判定

    链接: P3209 题意: 给出 \(T\) 张无向图 \((T\leq100)\),并给出它对应的哈密顿回路,判断每张图是否是平面图. 分析: 平面图判定问题貌似是有线性做法的,这里给出链接,不是本 ...

  3. 洛谷P3203 [HNOI2010]弹飞绵羊(LCT,Splay)

    洛谷题目传送门 关于LCT的问题详见我的LCT总结 思路分析 首先分析一下题意.对于每个弹力装置,有且仅有一个位置可以弹到.把这样的一种关系可以视作边. 然后,每个装置一定会往后弹,这不就代表不存在环 ...

  4. Bzoj2002/洛谷P3203 [HNOI2010]弹飞绵羊(分块)

    题面 Bzoj 洛谷 题解 大力分块,分块大小\(\sqrt n\),对于每一个元素记一下跳多少次能跳到下一个块,以及跳到下一个块的哪个位置,修改的时候时候只需要更新元素所在的那一块即可,然后询问也是 ...

  5. 洛谷 P4073 [WC2013]平面图

    #include<bits/stdc++.h> using namespace std; ; typedef long double LD; ; ); int dcmp(LD x){ret ...

  6. 洛谷P3209 [HNOI2010]PLANAR

    首先用一波神奇的操作,平面图边数m<=3*n-6,直接把m降到n, 然后对于冲突的边一条环内,一条环外,可以用并查集或者2Sat做, 当然并查集是无向的,2Sat是有向的,显然用并查集比较好 复 ...

  7. 洛谷P3209 [HNOI2010]PLANAR(2-SAT)

    题目描述 若能将无向图G=(V,E)画在平面上使得任意两条无重合顶点的边不相交,则称G是平面图.判定一个图是否为平面图的问题是图论中的一个重要问题.现在假设你要判定的是一类特殊的图,图中存在一个包含所 ...

  8. 洛谷 P3205 [HNOI2010]合唱队 解题报告

    P3205 [HNOI2010]合唱队 题目描述 为了在即将到来的晚会上有更好的演出效果,作为AAA合唱队负责人的小A需要将合唱队的人根据他们的身高排出一个队形.假定合唱队一共N个人,第i个人的身高为 ...

  9. 洛谷 P3203 [HNOI2010]弹飞绵羊 解题报告

    P3203 [HNOI2010]弹飞绵羊 题目描述 某天,Lostmonkey发明了一种超级弹力装置,为了在他的绵羊朋友面前显摆,他邀请小绵羊一起玩个游戏.游戏一开始,Lostmonkey在地上沿着一 ...

  10. 洛谷——P3205 [HNOI2010]合唱队

    P3205 [HNOI2010]合唱队 题目描述 为了在即将到来的晚会上有更好的演出效果,作为AAA合唱队负责人的小A需要将合唱队的人根据他们的身高排出一个队形.假定合唱队一共N个人,第i个人的身高为 ...

随机推荐

  1. Django关于StreamingHttpResponse与FileResponse响应文件或视频的下载请求

    StreamingHttpResponse from django.http import StreamingHttpResponse StreamingHttpResponse(streaming_ ...

  2. zynq7000 I2C RTC 与 串口使用

    RS485 串口 测试 硬件上2路串口,其中UART 1对应PS STD IN/OUT,UART 0对应RS485: 图 ‑1 RS485电路,自动转换输入.输出方向 可参考 https://blog ...

  3. springboot-@Async默认线程池导致OOM问题

    目录 内存溢出的三种类型: 初步分析: 代码分析: 最终解决办法: 内存溢出的三种类型: 第一种OutOfMemoryError: PermGen space,发生这种问题的原意是程序中使用了大量的j ...

  4. 【Azure 环境】IntelliJ IDEA Community Edition 2021.2.3登陆Azure账号时,无法切换到中国区

    问题描述 在IntelliJ IDEA Community Edition 2021.2.3中开发Azure Function程序,最后准备部署到中国区 Azure Function中.如下,在Int ...

  5. SSK:超级键盘模拟器,调用底层,可模拟所有按键

    SSK - 吵架键盘模拟器 SuperSimulator of Keyboard 调用系统底层,能够模拟所有键盘操作! 本程序结合快Key(QuicKeys智能登录助手)一起使用,能够创造更多奇迹! ...

  6. axios 报 登出跨域 withCredentials: false,

    withCredentials: false, 默认值虽然是false,但是之前包装的时候设置成true了,所以最后再设置回来

  7. 基于python的每日固定时间执行实例解析

    一 概念 datetime模块属性如下所示:   二 源码解析 该源码中,对时间库datetime应用十分到位,可以看作如下所示: import datetime import threading d ...

  8. pfx文件导出pem和私钥,更换网站域名证书

    openssl 路径: C:\Program Files\OpenSSL-Win64\bin -- 导出pem证书openssl pkcs12 -in C:\BackUp\Lightning\cert ...

  9. drf(认证、权限、频率)

    一. 认证组件 1. 流程 1. 写一个类,继承BaseAuthentication,重写authenticate,认证的逻辑写在里面. 认证通过,返回两个值,一个值最终给了包装以后的request对 ...

  10. 记录--使用 JS 实现基本的截图功能

    这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助 思路分析 在开始动手之前,分析一下整个功能的实现过程: 根据图片大小创建 canvas1 画布,并将原图片直接定位在 canvas1 上: ...