#include<cstdio>
#include<cstring>
#include<iostream>
#define M 20005
#define N 2005
using namespace std;
int T,n,m,head[N],next[*M],u[*M],x[M],y[M],pos[N],cnt,tot,c[N],dfn[N],low[N],f[N],tim,t,z[M],sum,shu[M];
void tarjan(int x)
{
f[x]=;z[++t]=x;
low[x]=dfn[x]=++tim;
for(int i=head[x];i;i=next[i])
if(!dfn[u[i]])
tarjan(u[i]),low[x]=min(low[x],low[u[i]]);
else if(f[u[i]])
low[x]=min(low[x],dfn[u[i]]);
int now=-;
if(low[x]==dfn[x])
{
sum++;
while(now!=x)
{
now=z[t--];f[now]=;
shu[now]=sum;
}
}
}
void jia(int a1,int a2)
{
cnt++;
next[cnt]=head[a1];
head[a1]=cnt;
u[cnt]=a2;
}
bool pan()
{
for(int i=;i<=m;i++)
if(shu[*i]==shu[*i-])
return ;
return ;
}
int main()
{
scanf("%d",&T);
for(;T;T--)
{
scanf("%d%d",&n,&m);
for(int i=;i<=m;i++)
scanf("%d%d",&x[i],&y[i]);
memset(head,,sizeof(head));
sum=cnt=tim=;
memset(dfn,,sizeof(dfn));
memset(low,,sizeof(low));
for(int i=;i<=n;i++)
scanf("%d",&c[i]);
if(m>*n-)
{
printf("NO\n");
continue;
}
tot=;
for(int i=;i<=n;i++)
pos[c[i]]=i;
for(int i=;i<=m;i++)
{
x[i]=pos[x[i]];
y[i]=pos[y[i]];
if(x[i]>y[i])
swap(x[i],y[i]);
if(y[i]-x[i]==||(y[i]==n&&x[i]==))
continue;
tot++;
x[tot]=x[i];
y[tot]=y[i];
}
m=tot;
for(int i=;i<=m;i++)
for(int j=i+;j<=m;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]))
{
jia(i*,j*-);
jia(j*-,i*);
jia(i*-,j*);
jia(j*,i*-);
}
for(int i=;i<=*m;i++)
if(!dfn[i])
tarjan(i);
if(pan())
printf("YES\n");
else
printf("NO\n");
}
return ;
}

平面图在环内顶多有n-3条,环外顶多有n-3条,环上n条,所以超过3*n-6条边一定不是平面图,然后把所有的边按哈密尔顿重新编号,判断是否相交,相交的话一定一条在外,一条在内,

这样就变成了2-set问题,用tarjin跑。

bzoj 1997: [Hnoi2010]Planar的更多相关文章

  1. BZOJ 1997: [Hnoi2010]Planar( 2sat )

    平面图中E ≤ V*2-6.. 一个圈上2个点的边可以是在外或者内, 经典的2sat问题.. ----------------------------------------------------- ...

  2. Bzoj 1997 [Hnoi2010]Planar题解

    1997: [Hnoi2010]Planar Time Limit: 10 Sec  Memory Limit: 64 MBSubmit: 2224  Solved: 824[Submit][Stat ...

  3. [BZOJ 1997][HNOI2010]Planar(2-SAT)

    题目:http://www.lydsy.com:808/JudgeOnline/problem.php?id=1997 分析: 考虑每条边是在圈子里面还是圈子外面 所以就变成了2-SAT判定问题了= ...

  4. bzoj 1997 [Hnoi2010]Planar——2-SAT+平面图的一个定理

    题目:https://www.lydsy.com/JudgeOnline/problem.php?id=1997 平面图的一个定理:若边数大于(3*点数-6),则该图不是平面图. 然后就可以2-SAT ...

  5. bzoj 1997: [Hnoi2010]Planar【瞎搞+黑白染色】

    脑补一下给出的图:一个环,然后有若干连接环点的边,我们就是要求这些边不重叠 考虑一下不重叠的情况,两个有交边一定要一个在环内一个在环外,所以把相交的边连边,然后跑黑白染色看是否能不矛盾即可(可能算个2 ...

  6. 1997: [Hnoi2010]Planar

    1997: [Hnoi2010]Planar 链接 分析: 首先在给定的那个环上考虑进行操作,如果环内有有两条边相交,那么可以把其中的一条放到环的外面去.所以转换为2-sat问题. 像这样,由于1-4 ...

  7. bzoj千题计划231:bzoj1997: [Hnoi2010]Planar

    http://www.lydsy.com/JudgeOnline/problem.php?id=1997 如果两条边在环内相交,那么一定也在环外相交 所以环内相交的两条边,必须一条在环内,一条在环外 ...

  8. [bzoj1997][Hnoi2010]Planar(2-sat||括号序列)

    开始填连通分量的大坑了= = 然后平面图有个性质m<=3*n-6..... 由平面图的欧拉定理n-m+r=2(r为平面图的面的个数),在极大平面图的情况可以代入得到m=3*n-6. 网上的证明( ...

  9. 条件转化,2-sat BZOJ 1997

    http://www.lydsy.com/JudgeOnline/problem.php?id=1997 1997: [Hnoi2010]Planar Time Limit: 10 Sec  Memo ...

随机推荐

  1. SQLserver批量删除空表

    今天需要清理一个很大的数据库,里面表有一堆,而且有很多是空表.想着把数据库弄小点,于是想到一次性删掉所有空表. 废话不多说,上代码. 首先,查处所有的空表. select distinct a.nam ...

  2. mysql Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)

    错误原因:/var/lib/mysql目录中socket文件不存在.连接mysql服务器有两种方式:tcp连接,通过socket文件连接.通过socket文件,启动mysql服务,mysql服务会自动 ...

  3. 提高iOS开发效率的第三方框架等

    http://zhangmingwei.iteye.com/blog/2208783 http://www.kuqin.com/shuoit/20150703/346900.html

  4. junit4 javaee 5.0 jpa SSH 单元测试问题集锦

    本篇文章基于已经实现了ssh集成的demo.项目.具体的ssh项目怎么配置,请参考本文最后 spring环境下的JUnit4测试 1,下载所需jar包: spring-test-3.2.0.RELEA ...

  5. HTML5地理位置概述和地理位置对象的详解

    一.地理位置 经度  :   南北极的连接线 纬度  :   东西连接的线   二.位置信息从何而来 IP地址 GPS全球定位系统 Wi-Fi无线网络 基站         三.地理位置对象(navi ...

  6. 在Windows和Linux上安装paramiko模块

    一.paramiko模块有什么用? paramiko是用python语言写的一个模块,遵循SSH2协议,支持以加密和认证的方式,进行远程服务器的连接.由于使用的是python这样的能够跨平台运行的语言 ...

  7. KD-tree

    就是K维空间上的二叉查找树. 每个node对应k维空间的超矩形区域 在方差最大的维度上,比较数据与kd-tree的根节点.中间节点,在该维度上的中值处划分,得到新的子空间,直到不能再分. 用于最近邻查 ...

  8. js encodeURI方法认识

    很早就知道js中encodeURI方法,也很早就用过,但是每次看到它总感觉有些陌生,因为不知道到底是什么原理,和普通的编码到底什么关系, 今天在查看w3c api时又遇到了她,正好有空就多看了几眼,突 ...

  9. linux笔记:关机重启命令shutdown,系统运行级别init,退出登录logout

    命令名称:shutdown功能:关机或重启用法:shutdown [选项] [时间]选项参数:-c 取消前一个关机命令-h 关机-r 重启时间格式:now 现在时:分 20:30其他:会正常关闭正在启 ...

  10. selenium+python笔记7

    #!/usr/bin/env python # -*- coding: utf-8 -*- """ @desc: 测试126邮箱的登陆功能 1.使用公共方法public. ...