题目大意:一个圆上有m对点需要相连,连的方法可以在圆里外连,问是否可以使得两两连线不相交;

题目解析:判断如果两个线段如果会有冲突,那么只能一个在里面一个在外面;

AC代码:

#include<iostream>
#include<cstdio>
#include<cstring>
#include<string>
#include<algorithm>
#include<vector>
#include<stack>
using namespace std;
const int maxn=51010*2;
const int maxm = 51010;
int first[maxn*2];
int vv[maxm*4],nxt[maxm*4],S[maxm*4];
int e,c,n,m;
bool vis[maxn*2];
void addedge(int u,int v)
{  vv[e] = v;  nxt[e] = first[u];  first[u] = e++;
}  bool dfs(int u)
{  if(vis[u^1])    return 0;  if(vis[u])  return 1;  vis[u] = 1;  S[c++] = u;  for(int i = first[u];i != -1;i = nxt[i])  {  int v = vv[i];  if(!dfs(v)) return false;  }  return true;
}  bool Judge()
{  n=m;for(int i = 0;i < n*2;i+=2)  {  if(!vis[i] && !vis[i+1])  {  c = 0;  if(!dfs(i))  {  while(c > 0) vis[S[--c]] = 0;  if(!dfs(i+1))   return false;  }  }  }  return true;
}
int x[maxn],y[maxn];
bool conflict(int i,int j)
{bool flag = 0;flag |= ((x[j] > x[i] && x[j] < y[i]) && !(y[j] > x[i] && y[j] < y[i]));flag |= ((y[j] > x[i] && y[j] < y[i]) && !(x[j] > x[i] && x[j] < y[i]));return flag;
}
int main()
{while(scanf("%d%d",&n,&m)!=EOF){memset(first,-1,sizeof(first));e=0;memset(vis,0,sizeof(vis));for(int i=0;i<m;i++)scanf("%d%d",&x[i],&y[i]);for(int i=0;i<m;i++){for(int j=i+1;j<m;j++){if(conflict(i,j)){addedge(i*2,j*2+1);addedge(j*2,i*2+1);addedge(i*2+1,j*2);addedge(j*2+1,i*2);}}}if(Judge())printf("panda is telling the truth...\n");else printf("the evil panda is lying again\n");}return 0;
}

POJ-3207-TwoSAT相关推荐

  1. 解题报告 poj 3207

    1.        题目 POJ 3207 2.        题目实质 平面上,一个圆,圆的边上按顺时针放着n个点.现在要连m条边,比如a,b,那么a到b可以从圆的内部连接,也可以从圆的外部连接.问 ...

  2. poj 3207 Ikki's Story IV - Panda's Trick(2-SAT)

    题目链接:http://poj.org/problem?id=3207 思路分析:该问题给出N个点,并给出M条连接这些点的线,需要判断是否这些线不会相交: (1)假设两条线A的端点按照圆圈的顺时针方向 ...

  3. poj 3207 2-sat

    题目链接:http://poj.org/problem?id=3207 #include <cstdio> #include <cmath> #include <algo ...

  4. POJ.3207.Ikki's Story IV-Panda's Trick(2-SAT)

    题目链接 \(Description\) 一个圆上顺序排列0,1,...,n-1共n个点,给出m条线段,线段可以从里面连也可以从外面连,问是否能满足所有线段不相交 \(Solution\) 把每条线段 ...

  5. POJ 3207 Ikki's Story IV - Panda's Trick (POJ 六道2-SAT之一)

    题意:平面上,一个圆,圆的边上按顺时针放着n个点.现在要连m条边,比如a,b,那么a到b可以从圆的内部连接,也可以从圆的外部连接.给你的信息中,每个点最多只会连接的一条边.问能不能连接这m条边,使这些 ...

  6. poj pku图论、网络流入门题总结、汇总

    poj pku图论.网络流入门题总结.汇总 分类: acm图论 2010-08-25 18:49 243人阅读 评论(0) 收藏 举报 网络算法networkgraphconstructioninte ...

  7. POJ 图论分类 + DP(较全 自己又加了点)

    DP -----------动态规划 状态压缩DP 2411 (棋盘规模较大)状态压缩DP+DFS+滚动数组 2664 (棋盘规模较小)直接递推即可(DP) 2506 (棋盘规模较小)直接递推即可(D ...

  8. 服务器系统检测报告自动生成,生成allure测试报告之后,服务器端口无法访问查看生成的report,可能是这样引起的。...

    搜索引擎Solr系列(二): Solr6.2.1 从MySql中导入数据 一:建立MySql测试表,如下图: 二:solr导入配置: 1.新建demo core文件夹,并修改managed-schem ...

  9. [kuangbin]各种各样的题单

    [kuangbin]各种各样的题单 专题1 简单搜索 POJ 1321 POJ 2251 POJ 3278 POJ 3279 POJ 1426 POJ 3126 POJ 3087 POJ 3414 F ...

  10. (转)2-sat 专题

    [2-sat]专题- 2-sat是一个逻辑性很强的算法,但是其套路比较固定,所以不是很热,题目很少,但也不乏AC后让人大呼爽快的好题,下面放出两篇极品论文还有几道题目的题解以供交流-- 2-sat学习 ...

最新文章

  1. UICollectionView的使用方法
  2. JavaScript = TypeScript 类入门
  3. [MySQL FAQ]系列 -- MySQL支持绑定到多个ip上吗
  4. 【深度学习】基于Colab Pro的TPU训练模型教程(Tensorflow)
  5. python 类的功能,字符串字节,嵌套等相关学习总结
  6. 如何做一个内心强大的人
  7. Zookeeper数据一致性原理
  8. python ioc框架_轻松理解 Spring 中的 IOC
  9. python线程池的使用
  10. 运维自动化部署Cobbler之服务安装篇
  11. jquery进度条组件
  12. 【科研论文】Endnote入门指南
  13. HashMap灵魂26问
  14. python glob.glob使用
  15. 硬纪元干货|appMagics伏英娜:优质IP和直播内容嫁接,带来全新AR体验
  16. 天敏的SDK2000
  17. 潘建伟:与量子“纠缠”的逐梦者
  18. android实现监听打电话并录音保存到本地
  19. 在 Ubuntu 上安装 jstest-gtk 手柄测试
  20. Linux CentOS  复制文件、替换文件 cp 复制文件、cp 覆盖文件 cp替换文件

热门文章

  1. 实现原理 扫描枪_条码扫描枪原理
  2. win10系统计算机如何分盘,win10怎么进行分盘_win10电脑如何合理分盘
  3. 简述软件工程、软件开发方法、软件开发工具相关概念及之间的关系
  4. 短视频制作团队的工作流程分为5个步骤
  5. 不良资产处置(二):不良资产处置存在问题及发展前景
  6. 京东联盟接口——链接取商品sku
  7. 文件mime类型大全
  8. crmeb重新安装_Linux下CRMEB环境搭建
  9. Lesson 10 The loss of the Titanic 内容鉴赏
  10. 移动硬盘格式化了?这样恢复数据