题解:

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

和那一题差不多

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. SCP命令只能单项拷贝,另一个方向“RSA host key for 172.16.103.176 has changed and you have requested strict checki Host key verification failed. lost connection”问题

    [dinghuaneng@95 move_data]$ scp * dinghuaneng@172.16.103.176:/home/dinghuaneng@@@@@@@@@@@@@@@@@@@@@@ ...

  2. 【.Net基础一】 类型、对象、线程栈、托管堆运行时的相互关系

    目前在看CLR via C#,把总结的记下来,索性就把他写成一个系列吧. 1.[.Net基础一] 类型.对象.线程栈.托管堆运行时的相互关系 2.[.Net基础二]浅谈引用类型.值类型和装箱.拆箱 J ...

  3. OpenCV KNN 之 使用方法

    http://blog.csdn.net/WL2002200/article/details/43149229 OpenCV 中KNN构造函数如下. C++: CvKNearest::CvKNeare ...

  4. Django---ModelForm详解

    示例: from django.db import models from django.forms import ModelForm TITLE_CHOICES = ( ('MR', 'Mr.'), ...

  5. Python3.x:打包为exe执行文件(window系统)

    Python3.x:打包为exe执行文件(window系统) window系统下发布: 一.安装pyinstaller(PyInstaller 3.3.1) cmd安装命令: pip install ...

  6. 20145333《Java程序设计》课程总结

    每周读书笔记链接汇总 第一周学习总结 第二周学习总结 第三周学习总结 第四周学习总结 第五周学习总结 第六周学习总结 第七周学习总结 第八周学习总结 第九周学习总结 第十周学习总结 实验报告链接汇总 ...

  7. Docker pull网络错误

    [root@Oracle ~]# docker search centos Error response from daemon: Get https://index.docker.io/v1/sea ...

  8. codeforces Round#429 (Div2)

    2017-08-20 10:00:37 writer:pprp 用头文件#include <bits/stdc++.h>很方便 A. Generous Kefa codeforces 84 ...

  9. Docker run 挂载 volume 记录

     docker run -i -t -v /f/a:/f/ centos:7 /bin/bash -v 本地路径 : 挂载到 centos 中  f 文件夹 中 windows10 中  不能使用 f ...

  10. nagios配置邮件报警

    1.配置sendmail vi /etc/mail.rc 加入以下行 set bsdcompat set from=邮件用户名@domain.com smtp=smtp.126.com set smt ...