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 ...
随机推荐
- 用windows远程桌面连接ubuntu
从Windows 7远程到Windows系统比较简单,只要对方电脑开启远程桌面功能就可以了,但Windows 7远程桌面连接到Ubuntu 14.04比较复杂一点,具体操作步骤如下. Ubuntu 1 ...
- 向现有的磁盘组加入/删除ASM磁盘
ASM磁盘组支持动态扩展,我们可以向现有的磁盘组动态加入新的磁盘,新磁盘加入后,Oracle通过后台RBAL进行Rebalance,将当前的数据均衡到新增加的磁盘上.Drop磁盘亦会Rebalance ...
- 0301mysql数据库建表情况
转自博客:http://blog.csdn.net/dreamcode/article/details/8557197 一. 表设计 库名.表名.字段名必须使用小写字母,“_”分割. 库名.表名.字段 ...
- Java基础教程:tutorialspoint-spring mvc
教程: 来自turorialspoint的Spring MVC 4.1.6教程(英文),官网:https://www.tutorialspoint.com/springmvc/index.htm 离线 ...
- Mule ESB-3.Build a webservice proxy
自从引入ESB后,系统之间不再直接依赖.我负责的这块,主要是解决Webservice的问题.使系统A不再直接依赖系统B的Webservice. 我们选择的产品是Mule ESB.所以自然要使用Mule ...
- UVA11234 Expressions
题目的意思实在是读不懂,又是把栈变成队列什么的.. 只是大体的意思就是把后缀表达式变一下.. 抛开意思,事实上就是依据输入建个树,然后倒序输出.. 拿第一个例子说明:大写代表操作符(+ - × /之类 ...
- [POJ 1934] Trip
[题目链接] http://poj.org/problem?id=1934 [算法] 先用dp求出LCS,然后搜索即可,注意加上一些剪枝 [代码] #include <algorithm> ...
- [转载]H3C S3600 DHCP-SERVER 配置【原创】
原文地址:H3C S3600 DHCP-SERVER 配置[原创]作者:旅行者萧 案例要求: 在H3C S3600-28TP-SI 的vlan 里配置DHCP server,使用vlan 里部分网段为 ...
- 用fiddler不能抓取https及证书无法导出
本次说的不是首次安装fiddler 1.不管有没有安装成功,先查看有没有安装过证书,有的话删除,重新进行安装 打开fiddler,找到Tools-HTTPS-Athons-Open windows C ...
- JS 中构造函数和普通函数的区别(详)
1.构造函数也是一个普通函数,创建方式和普通函数一样,但构造函数习惯上首字母大写 2.构造函数和普通函数的区别在于:调用方式不一样.作用也不一样(构造函数用来新建实例对象) 3.调用方式不一样. 普通 ...