题目链接:http://poj.org/problem?id=3207

#include <cstdio>
#include <cmath>
#include <algorithm>
#include <iostream>
#include <cstring>
#include <queue>
#include <vector>#define maxn 1050
#define maxe 550
#define INF  0x3f3f3f
using namespace std;struct TwoSat{int n;vector<int> G[maxe*2];bool mark[maxe*2];int s[maxe*2],cnt;void init(int n){this->n = n;memset(mark,0,sizeof(mark));for(int i=0;i<=n*2;i++) G[i].clear();}bool dfs(int u){if(mark[u^1])  return false;if(mark[u])    return true;mark[u] = true;s[cnt++] = u;for(int i=0;i<G[u].size();i++){if(!dfs(G[u][i]))  return false;}return true;}void add_clause(int u,int uval,int v,int vval){u = u*2 + uval;v = v*2 + vval;G[u^1].push_back(v);G[v].push_back(u^1);G[v^1].push_back(u);G[u].push_back(v^1);}bool solve(){for(int i=0;i<n*2;i+=2){ if(!mark[i] && !mark[i+1]){ cnt = 0;   //这就是一直WA的原因 if(!dfs(i)){while(cnt > 0) mark[s[--cnt]]  = false;if(!dfs(i+1))  return false;  }}}return true;     //这也是WA的原因
    }
}solver;int main()
{//freopen("input.txt","r",stdin);int n,m;scanf("%d%d",&n,&m);struct Edge{int u,v;}e[maxe];for(int i=0;i<m;i++){int a,b;scanf("%d%d",&a,&b);if(a > b){int temp = a;a = b;b = temp;} e[i].u = a;  e[i].v = b;}solver.init(m);for(int i=0;i<m;i++)for(int j=i+1;j<m;j++){int x1 = e[i].u ,y1 = e[i].v;int x2 = e[j].u ,y2 = e[j].v;if((x2>x1 && x2<y1 && y2 > y1) ||(y2>x1 && y2<y1 && x2<x1)){solver.add_clause(i,1,j,1); }}if(solver.solve()) printf("panda is telling the truth...\n");else               printf("the evil panda is lying again\n");
}

View Code

转载于:https://www.cnblogs.com/acmdeweilai/p/3235873.html

poj 3207 2-sat相关推荐

  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.Ikki's Story IV-Panda's Trick(2-SAT)

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

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

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

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

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

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

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

  7. linux时间为什么没有北京,linux修改时区为中国时区(北京)

    [linux]linux下运行java程序 参考了http://www.cnblogs.com/howard-queen/archive/2012/01/30/2331795.html 第一步:用vi ...

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

最新文章

  1. CS231n 学习笔记(1)——神经网络 part1 :图像分类与数据驱动方法
  2. Python中join()方法和os.path.join()方法
  3. 【干货】PMcaff干货课程学习精彩分享:Apple Watch 技术特性详解
  4. 节点服务器虚拟网络,虚拟网络功能节点放置研究
  5. 机器学习算法Python实现:基于情感词典的文本情感分析
  6. 是谁在我的心里打了个结(二十一)托付
  7. 阶段1 语言基础+高级_1-3-Java语言高级_05-异常与多线程_第4节 等待唤醒机制_1_线程状态概述...
  8. 如何设计企业特色的数字化转型架构?
  9. 黑色HTML5网站整站源码
  10. 加载项目的时候提示:需要缺少的web组件才能进行加载
  11. 首次适应算法的模拟C++实现(没有)
  12. 用js实现一个自动阅读的代码
  13. workbench设置单元坐标系_浅谈Ansys中的几种坐标系
  14. gdb、ida调试笔记
  15. vs2015安装Qt插件问题
  16. 微信小程序使用七牛云对象存储保存图片和文件
  17. 细雨算法升级,针对B2B领域低质内容
  18. h3c smart link
  19. 音速索尼克 怪人_优势演员评论家方法简介:让我们玩刺猬索尼克!
  20. 从零编写60%+胜率的短线择时信号!零基础python量化投资代码详解【邢不行】

热门文章

  1. 关于Linux你了解多少?Linux由来!
  2. JSP和Servlet的六种中文乱码处理方法
  3. Oracle ASM Cluster File Systems (ACFS)应用指南
  4. (课程学习笔记)玩转Linux:常用命令实例指南
  5. 关于推荐系统中的长尾商品
  6. HTML5 Drop API
  7. 脚本语言语言脚本语言:Shell , JavaScript、VBScript、Perl、PHP、Python、Ruby、Lua
  8. 我使用过的Linux命令之clear - 清除终端屏幕,不是cls
  9. c#可移动不规则窗体
  10. ajax常见问题汇总(一)