题解:

在圆上面的点能不能不交叉

和那一题差不多

http://www.cnblogs.com/xuanyiming/p/8110597.html

代码:

#include<bits/stdc++.h>
using namespace std;
const int N=;
int read()
{
int x=,f=;char ch=getchar();
while(ch<''||ch>''){if(ch=='-')f=-;ch=getchar();}
while(ch>=''&&ch<=''){x=x*+ch-'';ch=getchar();}
return x*f;
}
int T,n,m,ind,top,cnt,scc,u[N],v[N];
int c[N],pos[N],last[N],dfn[N],low[N],q[N],bl[N],inq[N];
struct edge{int to,next;}e[N*];
void jb(int u,int v)
{
e[++cnt].to=v;
e[cnt].next=last[u];
last[u]=cnt;
}
void tarjan(int x)
{
inq[x]=;q[++top]=x;
low[x]=dfn[x]=++ind;
for (int i=last[x];i;i=e[i].next)
if (!dfn[e[i].to])tarjan(e[i].to),low[x]=min(low[x],low[e[i].to]);
else if(inq[e[i].to])low[x]=min(low[x],dfn[e[i].to]);
int now=-;
if (low[x]==dfn[x])
{
scc++;
while(now!=x)
{
now=q[top--];inq[now]=;
bl[now]=scc;
}
}
}
int jud()
{
for (int i=;i<=m;i++)
if(bl[*i]==bl[*i-])return ;
return ;
}
int main()
{
T=read();
while (T--)
{
n=read();m=read();
for (int i=;i<=m;i++)u[i]=read(),v[i]=read();
memset(last,,sizeof(last));cnt=;
scc=ind=;
memset(low,,sizeof(low));
memset(dfn,,sizeof(dfn));
for (int i=;i<=n;i++)c[i]=read();
if (m>*n-){puts("NO");continue;}
for (int i=;i<=n;i++)pos[c[i]]=i;
top=;
for(int i=;i<=m;i++)
{
v[i]=pos[v[i]];u[i]=pos[u[i]];
if (u[i]>v[i])swap(u[i],v[i]);
if (v[i]-u[i]==||(v[i]==n&&u[i]==))continue;
u[++top]=u[i],v[top]=v[i];
}
m=top;
for(int i=;i<=m;i++)
for (int j=i+;j<=m;j++)
if((u[i]<u[j]&&u[j]<v[i]&&v[i]<v[j])
||(u[j]<u[i]&&u[i]<v[j]&&v[j]<v[i]))
{
jb(*i-,*j);
jb(*i,*j-);
jb(*j-,*i);
jb(*j,*i-);
}
top=;
for (int i=;i<=*m;i++)
if (!dfn[i])tarjan(i);
if (jud())puts("YES");
else puts("NO");
}
return ;
}

bzoj1997的更多相关文章

  1. 【BZOJ1997】Planar(2-sat)

    [BZOJ1997]Planar(2-sat) 题面 BZOJ 题解 很久没做过\(2-sat\)了 今天一见,很果断的就来切 这题不难呀 但是有个玄学问题: 平面图的性质:边数\(m\)的最大值为\ ...

  2. bzoj1997 [HNOI2010]平面图判定Plana

    bzoj1997 [HNOI2010]平面图判定Planar 链接 bzoj luogu 思路 好像有很多种方法过去.我只说2-sat 环上的边,要不在里面,要不在外边. 有的边是不能同时在里面的,可 ...

  3. BZOJ1997 [Hnoi2010]Planar 【2-sat】

    题目链接 BZOJ1997 题解 显然相交的两条边不能同时在圆的一侧,\(2-sat\)判一下就好了 但这样边数是\(O(m^2)\)的,无法通过此题 但是\(n\)很小,平面图 边数上界为\(3n ...

  4. 【BZOJ1997】[Hnoi2010]Planar 2-SAT

    [BZOJ1997][Hnoi2010]Planar Description Input Output Sample Input 2 6 9 1 4 1 5 1 6 2 4 2 5 2 6 3 4 3 ...

  5. [BZOJ1997][HNOI2010] 平面图判定

    Description Input Output     是的..BZOJ样例都没给.     题解(from 出题人): 如果只考虑简单的平面图判定,这个问题是非常不好做的. 但是题目中有一个条件— ...

  6. bzoj1997: [Hnoi2010]Planar

    2-SAT. 首先有平面图定理 m<=3*n-6,如果不满足这条件肯定不是平面图,直接退出. 然后构成哈密顿回路的边直接忽略. 把哈密顿回路当成一个圆, 如果俩条边交叉(用心去感受),只能一条边 ...

  7. BZOJ1997 [Hnoi2010]Planar (2-sat)

    题意:给你一个哈密顿图,判断是不是平面图 思路:先找出哈密顿图来.哈密顿回路可以看成一个环,把边集划分成两个集合,一个在环内,一个在外.如果有两条相交边在环内,则一定不是平面图,所以默认两条相交边,转 ...

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

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

  9. bzoj1997 Planar

    题目链接 思路 首先以那个环为框架,把所有的边连出来.如果有两条边相交,那么就把其中一条放到环外面去. 如图: \((1,3)\)与\((2,5)相交,\)(1,4)\(与\)(2,5)相交.所以我们 ...

  10. BZOJ1997 平面图判定 平面图性质 2-sat

    相交的两条边不能在同一侧,用2-sat即可. 平面图点数-边数关系 \(E\le 3V-6\) 写这篇文章我只是想说明,知乎一小时,题解一分钟. lb Zhihu, gos langar Qarwet ...

随机推荐

  1. 安卓 Activity 生命周期

    创建到销毁的生命周期: onCreate()->onStart()->onResume()->onPause->onStop->onDestroy 启动到前台在到后台的生 ...

  2. 金融 贷款类 App 审核被拒 4.3 1.2 2.1 4.2.2 问题总结

    辛辛苦苦搞了一两个月,开发测试修bug,一路艰辛,到了审核这最后一关,各位同仁,咬紧牙关!接下来是鄙人遇到过的被拒问题,望能帮到诸君! ******************************** ...

  3. Java应用开发中的SQL注入攻击

    1. 什么是SQL注入攻击? SQL注入攻击是黑客对数据库进行攻击的常用手段之一.随着B/S模式应用开发的发展,使用这种模式编写应用程序的程序员越来越多.但是由于程序员的水平及经验参差不齐,相当一部分 ...

  4. javascript 基本数据类型、引用数据类型

    阅读目录 数据类型 两种访问方式 两种类型复制 函数参数的传递 两种变量类型检测 回到目录   数据类型 1.   ECMAScript变量包含两种不同类型的值:基本类型值.引用类型值: 2.   基 ...

  5. Linux Java环境搭建

    -------------------------网络配置-------------------------------1.配置DNS:vi /etc/resolv.confnameserver 19 ...

  6. 微信开放平台--》网站应用开发 微信登录网站接口(https://open.weixin.qq.com/)

    地址:https://open.weixin.qq.com/ 手册:https://open.weixin.qq.com/cgi-bin/showdocument?action=dir_list&am ...

  7. goland 使用简单配置-不断更新

    1.格式化代码 Ctrl+Alt+L  格式化代码 2.快捷键可能被占用 用tools-file watchers file->setting->tools->file watche ...

  8. 【纯代码】Swift - 自定义底部弹窗基类(可根据需要自行扩展内容)

    //弹窗视图 class PopView : UIView { var selectButtonCallBack:((_ title:String)-> Void)? var contenVie ...

  9. 入手sm961

    测速: 发现这个测速软件不同版本测试还不一样 下面是我的intel750的,用最新版本测试软件测的 淘宝买了一个散热片

  10. Nginx+vsftpd搭建图片服务器

    安装Nginx 参考:http://www.cnblogs.com/idefav2010/p/nginx-concat.html Nginx配置文件 location ~ .*\.(gif|jpg|j ...