bzoj1997
题解:
在圆上面的点能不能不交叉
和那一题差不多
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的更多相关文章
- 【BZOJ1997】Planar(2-sat)
[BZOJ1997]Planar(2-sat) 题面 BZOJ 题解 很久没做过\(2-sat\)了 今天一见,很果断的就来切 这题不难呀 但是有个玄学问题: 平面图的性质:边数\(m\)的最大值为\ ...
- bzoj1997 [HNOI2010]平面图判定Plana
bzoj1997 [HNOI2010]平面图判定Planar 链接 bzoj luogu 思路 好像有很多种方法过去.我只说2-sat 环上的边,要不在里面,要不在外边. 有的边是不能同时在里面的,可 ...
- BZOJ1997 [Hnoi2010]Planar 【2-sat】
题目链接 BZOJ1997 题解 显然相交的两条边不能同时在圆的一侧,\(2-sat\)判一下就好了 但这样边数是\(O(m^2)\)的,无法通过此题 但是\(n\)很小,平面图 边数上界为\(3n ...
- 【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 ...
- [BZOJ1997][HNOI2010] 平面图判定
Description Input Output 是的..BZOJ样例都没给. 题解(from 出题人): 如果只考虑简单的平面图判定,这个问题是非常不好做的. 但是题目中有一个条件— ...
- bzoj1997: [Hnoi2010]Planar
2-SAT. 首先有平面图定理 m<=3*n-6,如果不满足这条件肯定不是平面图,直接退出. 然后构成哈密顿回路的边直接忽略. 把哈密顿回路当成一个圆, 如果俩条边交叉(用心去感受),只能一条边 ...
- BZOJ1997 [Hnoi2010]Planar (2-sat)
题意:给你一个哈密顿图,判断是不是平面图 思路:先找出哈密顿图来.哈密顿回路可以看成一个环,把边集划分成两个集合,一个在环内,一个在外.如果有两条相交边在环内,则一定不是平面图,所以默认两条相交边,转 ...
- [bzoj1997][Hnoi2010]Planar(2-sat||括号序列)
开始填连通分量的大坑了= = 然后平面图有个性质m<=3*n-6..... 由平面图的欧拉定理n-m+r=2(r为平面图的面的个数),在极大平面图的情况可以代入得到m=3*n-6. 网上的证明( ...
- bzoj1997 Planar
题目链接 思路 首先以那个环为框架,把所有的边连出来.如果有两条边相交,那么就把其中一条放到环外面去. 如图: \((1,3)\)与\((2,5)相交,\)(1,4)\(与\)(2,5)相交.所以我们 ...
- BZOJ1997 平面图判定 平面图性质 2-sat
相交的两条边不能在同一侧,用2-sat即可. 平面图点数-边数关系 \(E\le 3V-6\) 写这篇文章我只是想说明,知乎一小时,题解一分钟. lb Zhihu, gos langar Qarwet ...
随机推荐
- Safari中的input、textarea无法输入的问题
原因是这两种表单元素上应用了user-select:none的css属性.一般没人刻意这么做,可能是这样的情况: * { user-select: none; } 在css中排除掉这两种元素就好了: ...
- sublime 安装插件报错
sublime 安装插件报错,大部分原因是本地防火墙开启了,关闭本地防火墙
- Mysql主从架构报错-Fatal error: The slave I/O thread stops because master and slave have equal MySQL server UUIDs; these UUIDs must be different for replication to work...
在搭建Mysql主从架构过程中,由于从服务器是克隆的主服务器系统,导致主从mysql uuid相同, Slave_IO无法启动,报错如下: The slave I/O thread stops bec ...
- 20145328 《Java程序设计》实验三实验报告
20145328 <Java程序设计>实验三实验报告 实验名称 Java敏捷开发与XP实践 实验内容 XP基础 XP核心实践 相关工具 实验步骤 (一)敏捷开发与XP 敏捷开发是一种以人为 ...
- 收藏 19 个 ES6常用的简写技巧
代码精炼是每个有追求的程序所向往的,本文总结了19个JavaScript的简写技术,其中包括三元操作符.短路求值简写方式.声明变量简写方法等等,还有些自己的理解加上去:希望对你有帮助. 三元操作符 当 ...
- 起源游戏临时实体(Temp Entity)
如何查看实体 https://wiki.alliedmods.net/Temp_Entity_Lists_(Source) 这里是部分游戏的临时实体列表 # 还可以通过在游戏内输入来获取游戏的临时实体 ...
- [洛谷P4886]快递员
题目大意:一个$n$个点的树,树上有$m$个点对$(a,b)$,找到一个点$x$,使得$max(dis(x,a_i)+dis(x,b_i))$最小 如果做过幻想乡的战略游戏这道题,应该这道题的思路一眼 ...
- OAuth Implementation for ASP.NET Web API using Microsoft Owin.
http://blog.geveo.com/OAuth-Implementation-for-WebAPI2 OAuth is an open standard for token based aut ...
- 跟着我一起学习大数据——Hadoop
hadoop配置文件:http://archive.cloudera.com/cdh5/cdh/5/hadoop-2.6.0-cdh5.9.0/ 一:Hadoop简介 总结下起源于Nutch项目,社区 ...
- POJ - 3169 差分约束
题意:n头牛,按照编号从左到右排列,两头牛可能在一起,接着有一些关系表示第a头牛与第b头牛相隔最多与最少的距离,最后求出第一头牛与最后一头牛的最大距离是多少,如 果最大距离无限大则输出 ...