还是那句话,做2SAT题时,找出矛盾点基本上可解了。这道题也是这样

题意是说给出一个圆上的 n 个点(0~n-1编号),然后在指定的 m 对点之间各连一条线(可以在圆内,也可以在圆外,可以是曲线,这点真心坑爹,开始一直木有看明白),然后问你是否能使这些线都不相交

当两条线在同一边会有交点时,即会有矛盾,建图加边。

对于那些没有交点即没有矛盾的边,直接忽略就好,因为边的含义是“必须”。

 #include <iostream>
#include <cstring>
#include <cstdio>
using namespace std; const int MAXN=;
const int MAXM=;
int n,m;
struct d{
int u,v;
}sv[];
int dfn[MAXN],low[MAXN],st[MAXN],tot,stop,pat,indx,belong[MAXN];
bool stack[MAXN];
struct e{
int u,v;
int next;
}edge[MAXM];
int head[MAXN]; void addedge(int u,int v){
edge[tot].u=u;
edge[tot].v=v;
edge[tot].next=head[u];
head[u]=tot++;
} void exch(int &x,int &y){
if(x>y){
int tmp=y;
y=x;
x=tmp;
}
} bool sure(int i,int k){
int u=sv[k].u;
int v=sv[k].v;
int p=sv[i].u;
int q=sv[i].v;
if(p>=u&&p<=v&&q>=u&&q<=v)
return false;
if(p>=v) return false;
if(q<=u) return false;
if(p<=u&&q>=v) return false;
return true;
} void tarjan(int u){
dfn[u]=low[u]=++indx;
stack[u]=true;
st[stop++]=u;
int v;
for(int e=head[u];e!=-;e=edge[e].next){
v=edge[e].v;
if(dfn[v]==){
tarjan(v);
low[u]=min(low[u],low[v]);
}
else if(stack[v]){
low[u]=min(low[u],dfn[v]);
}
}
if(dfn[u]==low[u]){
pat++;
do{
v=st[--stop];
belong[v]=pat;
stack[v]=false;
}while(u!=v);
}
} int main(){
int u,v;
while(scanf("%d%d",&n,&m)!=EOF){
tot=indx=pat=stop=;
for(int i=;i<m*;i++){
dfn[i]=low[i]=belong[i]=;
stack[i]=false; head[i]=-;
} for(int i=;i<m;i++){
scanf("%d%d",&sv[i].u,&sv[i].v);
exch(sv[i].u,sv[i].v);
if(i>){
for(int k=;k<i;k++){
if(sure(i,k)){
addedge(*i,*k+);
addedge(*k,*i+);
addedge(*i+,*k);
addedge(*k+,*i);
}
}
}
} for(int i=;i<*m;i++)
if(dfn[i]==)
tarjan(i); bool flag=true;
for(int i=;i<m;i++){
if(belong[i*]==belong[*i+]){
flag=false;
printf("the evil panda is lying again\n");
break;
}
}
if(flag)
printf("panda is telling the truth...\n");
}
return ;
}

POJ 3207的更多相关文章

  1. POJ 3207 Ikki&#39;s Story IV - Panda&#39;s Trick (2-SAT)

    职务地址:id=3207">POJ 3207 找好矛盾关系.矛盾关系是(2,5)和(3,6)这两个仅仅能一个在外边,一个在里边.利用这个矛盾关系来建图. 能够用在外边和里边来当1和0, ...

  2. 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 ...

  3. 2-SAT的小总结(POJ 3683 POJ 3207)

    记住几个最重要的公式: xANDy=0<=>(x=>y′)AND(y=>x′) xANDy=1<=>(x′=>x)AND(y′=>y) xORy=0&l ...

  4. POJ 3207 Ikki&#39;s Story IV - Panda&#39;s Trick(2-sat)

    POJ 3207 Ikki's Story IV - Panda's Trick id=3207" target="_blank" style=""& ...

  5. 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 ...

  6. [2-SAT] poj 3207 Ikki&#39;s Story IV - Panda&#39;s Trick

    题目链接: id=3207">http://poj.org/problem? id=3207 Ikki's Story IV - Panda's Trick Time Limit: 1 ...

  7. POJ 3207 【2-SAT入门题 + 强连通分量】

    这道题是我对于2-SAT问题的入门题:http://poj.org/problem?id=3207 一篇非常非常非常好的博客,很详细,认真看一遍差不多可以了解个大概:https://blog.csdn ...

  8. 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   ...

  9. poj 3207(2-SAT+SCC)

    传送门:Problem 3207 https://www.cnblogs.com/violet-acmer/p/9769406.html 难点: 题意理解. 题意: 平面上有一个圆,圆上有n个点(分别 ...

  10. 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   ...

随机推荐

  1. javascript 将变量值作为对象属性 获取对象对应的值

    例子 var var="name"; var objname="obj"; objname=objname+"."+var; alert(e ...

  2. MySQL:常用语句

    ylbtech-MySQL:常用语句 1.返回顶部 1. -- ---------------------------- -- Table structure for st_student -- -- ...

  3. Java插入中文到数据库中文变成问号解决

    转自:https://blog.csdn.net/hellosweet1/article/details/81673152 之所以会出现乱码,就是编码方式不一致导致的 我们应该首先确定         ...

  4. Java多线程技术-Volatile关键字解析

    分析volatile关键字可以从这三个方面分析,什么是程序的原子性,什么是程序的可见性,什么是程序的有序性 什么是程序的原子性 以下语句那些是原子操作? public class ThreadCoun ...

  5. TPshop规格组合错误

    TPshop规格组合错误 修改: admin/logic/goodslogic.class.php 中 方法:getSpecInput() 中 asort($spec_arr_sort) 去掉

  6. Java 类加载器及加载Class字节码

    参考来源:http://www.cnblogs.com/fingerboy/p/5456371.html       java笔记--理解java类加载器以及ClassLoader类 参考来源:htt ...

  7. php基础知识 书写格式

    PHP,是英文超文本预处理语言Hypertext Preprocessor的递归缩写.PHP 是一种 HTML 内嵌式的语言,是一种在服务器端执行的嵌入HTML文档的脚本语言. php嵌入页面的标记有 ...

  8. 【Oracle】详解ADDM工具

    一.ADDM简介           在Oracle9i及之前,DBA们已经拥有了很多很好用的性能分析工具,比如,tkprof.sql_trace.statspack.set event 10046& ...

  9. 关于php初学者的理解!请大家浏览并指出不足!谢谢!

    昨天开始学习php,由于之前是学习.NET的,刚接触php,就关于语法就是各种不适应,什么js,jq在脑子里一团浆糊..过了一天感觉好了点,现在有点想法,大家欢迎交流批评! 今天用php做了个登录,判 ...

  10. 读书笔记「Python编程:从入门到实践」_9.类

    9.1 创建和使用类 面向对象编程——Object Oriented Programming,简称OOP,是一种程序设计思想. OOP把对象作为程序的基本单元,一个对象包含了数据和操作数据的函数. 把 ...