bzoj 1997 [Hnoi2010]Planar——2-SAT+平面图的一个定理
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=1997
平面图的一个定理:若边数大于(3*点数-6),则该图不是平面图。
然后就可以2-SAT了!
注意把输入读完再用定理continue!!!
注意边是元素,所以是i+m,而且数组也应开成M<<1!!!
#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
const int N=,M=;
int T,n,m,hd[M<<],xnt,x[M],y[M],mp[N];
int dfn[M<<],low[M<<],tim,sta[M<<],top,col[M<<],cnt;
bool ins[M<<],flag;
struct Ed{
int nxt,to;Ed(int n=,int t=):nxt(n),to(t) {}
}ed[(M*M)<<];
bool check(int i,int j)
{
int x1=mp[x[i]],y1=mp[y[i]],x2=mp[x[j]],y2=mp[y[j]];
if(x1>y1)swap(x1,y1);
if((x2>x1&&x2<y1&&(y2>y1||y2<x1))||(y2>x1&&y2<y1&&(x2>y1||x2<x1)))return true;
return false;
}
void add(int i,int j)
{
ed[++xnt]=Ed(hd[i],j+m);hd[i]=xnt;
ed[++xnt]=Ed(hd[j],i+m);hd[j]=xnt;
ed[++xnt]=Ed(hd[i+m],j);hd[i+m]=xnt;
ed[++xnt]=Ed(hd[j+m],i);hd[j+m]=xnt;
}
void tarjan(int cr)
{
dfn[cr]=low[cr]=++tim;
sta[++top]=cr;ins[cr]=;
for(int i=hd[cr],v;i;i=ed[i].nxt)
if(!dfn[v=ed[i].to])tarjan(v),low[cr]=min(low[cr],low[v]);
else if(ins[v])low[cr]=min(low[cr],dfn[v]);
if(dfn[cr]==low[cr])
{
cnt++;
while(sta[top]!=cr)col[sta[top]]=cnt,ins[sta[top--]]=;
top--;col[cr]=cnt;ins[cr]=;
}
}
int main()
{
scanf("%d",&T);
while(T--)
{
scanf("%d%d",&n,&m);int z;
for(int i=;i<=m;i++)scanf("%d%d",&x[i],&y[i]);
for(int i=;i<=n;i++)
scanf("%d",&z),mp[z]=i;
if(m>*n-){printf("NO\n");continue;}//先把输入都读完再continue!!!
memset(hd,,sizeof hd);xnt=;
for(int i=;i<m;i++)
for(int j=i+;j<=m;j++)
if(check(i,j))add(i,j);
memset(dfn,,sizeof dfn);tim=;cnt=;
for(int i=;i<=*m;i++)if(!dfn[i])tarjan(i);
flag=;
for(int i=;i<=m;i++)
if(col[i]==col[i+m]){flag=;break;}
if(flag)printf("NO\n");
else printf("YES\n");
}
return ;
}
bzoj 1997 [Hnoi2010]Planar——2-SAT+平面图的一个定理的更多相关文章
- BZOJ 1997: [Hnoi2010]Planar( 2sat )
平面图中E ≤ V*2-6.. 一个圈上2个点的边可以是在外或者内, 经典的2sat问题.. ----------------------------------------------------- ...
- Bzoj 1997 [Hnoi2010]Planar题解
1997: [Hnoi2010]Planar Time Limit: 10 Sec Memory Limit: 64 MBSubmit: 2224 Solved: 824[Submit][Stat ...
- [BZOJ 1997][HNOI2010]Planar(2-SAT)
题目:http://www.lydsy.com:808/JudgeOnline/problem.php?id=1997 分析: 考虑每条边是在圈子里面还是圈子外面 所以就变成了2-SAT判定问题了= ...
- bzoj 1997: [Hnoi2010]Planar
#include<cstdio> #include<cstring> #include<iostream> #define M 20005 #define N 20 ...
- bzoj 1997: [Hnoi2010]Planar【瞎搞+黑白染色】
脑补一下给出的图:一个环,然后有若干连接环点的边,我们就是要求这些边不重叠 考虑一下不重叠的情况,两个有交边一定要一个在环内一个在环外,所以把相交的边连边,然后跑黑白染色看是否能不矛盾即可(可能算个2 ...
- 1997: [Hnoi2010]Planar
1997: [Hnoi2010]Planar 链接 分析: 首先在给定的那个环上考虑进行操作,如果环内有有两条边相交,那么可以把其中的一条放到环的外面去.所以转换为2-sat问题. 像这样,由于1-4 ...
- bzoj千题计划231:bzoj1997: [Hnoi2010]Planar
http://www.lydsy.com/JudgeOnline/problem.php?id=1997 如果两条边在环内相交,那么一定也在环外相交 所以环内相交的两条边,必须一条在环内,一条在环外 ...
- [BZOJ1997][Hnoi2010]Planar 2-sat (联通分量) 平面图
1997: [Hnoi2010]Planar Time Limit: 10 Sec Memory Limit: 64 MBSubmit: 2317 Solved: 850[Submit][Stat ...
- [bzoj1997][Hnoi2010]Planar(2-sat||括号序列)
开始填连通分量的大坑了= = 然后平面图有个性质m<=3*n-6..... 由平面图的欧拉定理n-m+r=2(r为平面图的面的个数),在极大平面图的情况可以代入得到m=3*n-6. 网上的证明( ...
随机推荐
- 函数---迭代器&生成器&列表解析&三元表达式
可迭代对象:obj.__iter__ 迭代器:iter1=obj.__iter() 1iter1.__next__ 2iter2.__next__ 迭代器: 优点:不依赖索引 ...
- java配置文件转义问题
场景: 配置文件config.properties 配置项cfg.regexp=\d+\t 加载配置文件代码 InputStream ins = PropManager ...
- 服务器windows 2003 安装SQL 2000+SP4
(在windows 2003安装SQL 2000,对于03系统是没有32位和64位之分的) (32位系统需要重启机器,64不需要) 在站点下载数据库 解压后有两个文件夹 首先安装SQL2000 第1步 ...
- vue-cli入门之项目结构分析
一个vue-cli的项目结构如下,其中src文件夹是需要掌握的,所以本文也重点讲解其中的文件,至于其他相关文件,了解一下即可. 文件结构细分 1.build——[webpack配置] build文件主 ...
- vue组件 Prop传递数据
组件实例的作用域是孤立的.这意味着不能(也不应该)在子组件的模板内直接引用父组件的数据.要让子组件使用父组件的数据,我们需要通过子组件的props选项. prop 是单向绑定的:当父组件的属性变化时, ...
- vue v-on监听事件
在html或jsp页面中我们总能碰到监听DOM事件来触发javaScript代码,下面我们就简单聊聊Vue.js中的监听事件是怎么处理的. 在vue.js中监听事件是通过v-on指令来实现的,先看一下 ...
- 配置网卡为vlan trunk
http://www.microhowto.info/tutorials/802.1q.html Configure an Ethernet interface as a VLAN trunk hos ...
- java大数字操作:BigInteger,BigDecimal(浮点型)
java大数字操作: BigInteger:大数字整型的 BigDecimal(浮点型):大数字小数的,也适用大的整数 BigInteger: String num1 = "10038182 ...
- delphi 数据连接规范
建议大家采用另外一种编码风格,不要在程序中到处都有这种LZ程序生成的代码: begin with qryMain do begin try Close; SQL.Clear; SQL.Add('Del ...
- svg札记
1.人老了,有些事情太容易忘记了,这里做下笔记,供参考,for self for you. 2.源于地图监控,建筑级别各大地图商的api(高德.百度.腾讯等)已经足够使用,唯独室内图这块还差点. 3. ...