Ikki's Story IV - Panda's Trick POJ - 3207_dfs跑2-SAT
Code:
#include<cstdio>
#include<algorithm>
#include<vector>
using namespace std;
const int maxn=3000;
int c=0;
int mark[maxn],S[maxn],from[maxn],to[maxn];
vector<int>G[maxn];
void add_edge(int x,int y){
x=(x*2)+1,y=(y*2)+1;
G[x-1].push_back(y); //里->外
G[y-1].push_back(x); //里->外
G[x].push_back(y-1); //外->里
G[y].push_back(x-1); //外->里
}
void build(int m){
for(int i=0;i<m-1;++i)
for(int j=i+1;j<m;++j)
if((from[j]<from[i]&&to[j]<to[i]&&to[j]>from[i])||(from[i]<from[j]&&to[i]<to[j]&&to[i]>from[j]))
add_edge(i,j);
}
int dfs(int x)
{
if(mark[x^1])return 0;
if(mark[x])return 1;
mark[x]=1;
++c;
S[c]=x;
int siz=G[x].size();
for(int i=0;i<siz;++i)
if(!dfs(G[x][i]))return 0;
return 1;
}
int solve(int m)
{
for(int i=0;i<m*2;i+=2){
if(!mark[i]&&!mark[i+1])
{
c=0;
if(!dfs(i))
{
while(c>0)
{
mark[S[c]]=0;
c-=1;
}
if(!dfs(i+1))return 0;
}
}
}
return 1;
}
int main(){
int n,m;
scanf("%d %d",&n,&m);
for(int i=0;i<m;++i){
int a,b;
scanf("%d%d",&a,&b);
from[i]=min(a,b);
to[i]=max(a,b);
}
build(m);
if(solve(m))printf("panda is telling the truth...");
else printf("the evil panda is lying again");
return 0;
}
Ikki's Story IV - Panda's Trick POJ - 3207_dfs跑2-SAT的更多相关文章
- Ikki's Story IV - Panda's Trick POJ - 3207(水2 - sat 在圈内 还是 在圈外)
题意: 就是一个圈上有n个点,给出m对个点,这m对个点,每一对都有一条边,合理安排这些边在圈内或圈外,能否不相交 解析: 我手残 我手残 我手残 写一下情况 只能是一个在圈外 一个在圈内 即一个1一个 ...
- POJ 3207 Ikki's Story IV - Panda's Trick
Ikki's Story IV - Panda's Trick Time Limit: 1000MS Memory Limit: 131072K Total Submissions: 7296 ...
- poj 3207 Ikki's Story IV - Panda's Trick (2-SAT)
http://poj.org/problem?id=3207 Ikki's Story IV - Panda's Trick Time Limit: 1000MS Memory Limit: 13 ...
- POJ 3207 Ikki's Story IV - Panda's Trick(2-sat问题)
POJ 3207 Ikki's Story IV - Panda's Trick(2-sat问题) Description liympanda, one of Ikki's friend, likes ...
- POJ 3207 Ikki's Story IV - Panda's Trick (2-sat)
Ikki's Story IV - Panda's Trick Time Limit: 1000MS Memory Limit: 131072K Total Submissions: 6691 ...
- 【POJ3207】Ikki's Story IV - Panda's Trick
POJ 3207 Ikki's Story IV - Panda's Trick liympanda, one of Ikki's friend, likes playing games with I ...
- 【POJ】3207 Ikki's Story IV - Panda's Trick
http://poj.org/problem?id=3207 题意:一个圆上顺时针依次排列着标号为1-n的点,这些点之间共有m条边相连,每两个点只能在圆内或者圆外连边.问是否存在这些边不相交的方案.( ...
- POJ 3207 Ikki's Story IV - Panda's Trick (2-SAT,基础)
题意: 有一个环,环上n个点,现在在m个点对之间连一条线,线可以往圆外面绕,也可以往里面绕,问是否必定会相交? 思路: 根据所给的m条边可知,假设给的是a-b,那么a-b要么得绕环外,要么只能在环内, ...
- POJ Ikki's Story IV - Panda's Trick [2-SAT]
题意: 圆上n个点,m对点之间连边,连在园内或园外,所有边不相交是否可行 发现两对点连线都在内相交则都在外也相交,那么只有一个在内一个在外啦,转化为$2-SAT$问题 #include <ios ...
随机推荐
- APIO 2017 游记
//第一次写游记,只是流水账...结果好像确实只去游了…… day-11 省选挂了,即将退役……(然而apio之后得知并没有退役,感谢放我一条活路)(吐槽出题人考完才造数据,题目没有子任务之类的玩意, ...
- Spring MVC-表单(Form)标签-文本框(Text Box)示例(转载实践)
以下内容翻译自:https://www.tutorialspoint.com/springmvc/springmvc_textbox.htm 说明:示例基于Spring MVC 4.1.6. 以下示例 ...
- Sublime Text 3常用插件—Emmet
原文链接:http://www.cnblogs.com/easy-blue/p/6617852.html 摘要: 安装请看上一篇Sublime Text—安装,和sublime自带快捷键一起用,写ht ...
- oracle BBED 直接改动数据库block块
1.BBED配置 1)将相应文件放到$ORACLE_HOME/rdbms/mesg和$ORACLE_HOME/rdbms/lib中: --将lib中bbedus.msb和bbedus.msg ...
- javascript基础篇--function类型(上)
在js中,function类型实际上是对象,每一个函数都是function类型的一个实例.并且与其它引用类型一样具有属性和方法. 声明 1普通方式 Function sum(num1,num2) { ...
- ScrollView嵌套ExpandableListView显示不正常的问题
关于ScrollView嵌套ExpandableListView导致ExpandableListView显示不正常的问题解决方法有非常多,在这里介绍一种小编亲自測试通过的方法. 重写Expandabl ...
- Scala入门到精通——第一节 Scala语言初步
本节主要内容 Scala简单介绍 为什么要学习Scala Scala语言初步 1. Scala简单介绍 Scala(Scala Language的简称)语言是一种能够执行于JVM和.Net平台之上的通 ...
- 1016. Phone Bills (25)——PAT (Advanced Level) Practise
题目信息: 1016. Phone Bills (25) 时间限制 400 ms 内存限制 32000 kB 代码长度限制 16000 B 判题程序 Standard 作者 CHEN, Yue A l ...
- 【待解决】An internal error occurred during: "Launching baiduTest1". java.lang.NullPointerException
编写的一个Java类,以junit运行可以正常执行,以testNG执行就报如下错误 解决方法:
- php学习随记3
<? php #正則表達式 #就是一种描写叙述字符串结构的语法规则 #是一个特定的格式化模式 #1. 行定位符 /* 1) ^行首 2)$行尾 tm eqaul Tomorrow Moon ^t ...