tarjan扫一遍后直接判断

最关键的地方就是建边(x[i] <= x[j] && y[i] >= x[j] && y[i] <= y[j]) || (x[i] >= x[j] && x[i] <= y[j] && y[i] >= y[j])

建边条件:x[ i ] < = x [ j ] < = y [ i ] < =y [ j ]或者 x [ j ] < = x [ i ] < = y [ j ] < = y [ i ]

这样的话 i 和 j 肯定是相交的,那么连边 ~i ,j 和 i,~j 这样保证了 i 和 j 是不相交的

如果同一个点的拆分在同一个强连通分量里面,那么就无法实现(因为这样i在同一个环中了)

注意 i 和 i + 1是同一个点拆分得到的

#include<map>
#include<set>
#include<cmath>
#include<queue>
#include<stack>
#include<vector>
#include<cstdio>
#include<cassert>
#include<iomanip>
#include<cstdlib>
#include<cstring>
#include<iostream>
#include<algorithm>
#define C 0.5772156649
#define pi acos(-1.0)
#define ll long long
#define mod 1000000007
#define ls l,m,rt<<1
#define rs m+1,r,rt<<1|1
#pragma comment(linker, "/STACK:1024000000,1024000000") using namespace std; const double g=10.0,eps=1e-;
const int N=+,maxn=+,inf=0x3f3f3f; stack<int>s;
int dfn[N],low[N];
int inans[N],ins[N];
int num,index;
int n,m;
int x[N],y[N];
vector<int>v[N];
void tarjan(int u)
{
ins[u]=;
dfn[u]=low[u]=++index;
s.push(u);
for(int i=;i<v[u].size();i++)
{
int x=v[u][i];
if(dfn[x]==)
{
tarjan(x);
low[u]=min(low[u],low[x]);
}
else if(ins[x]==)low[u]=min(low[u],dfn[x]);
}
if(dfn[u]==low[u])
{
++num;
while(!s.empty()){
int k=s.top();
s.pop();
ins[k]=;
inans[k]=num;
if(k==u)break;
}
}
}
int main()
{
ios::sync_with_stdio(false);
cin.tie();
memset(inans,,sizeof inans);
memset(ins,,sizeof ins);
memset(dfn,,sizeof dfn);
memset(low,,sizeof low);
for(int i=;i<=*m;i++)v[i].clear();
while(!s.empty())s.pop();
index=num=;
cin>>n>>m;
for(int i=;i<=m;i++)
{
cin>>x[i]>>y[i];
if(x[i]>y[i])swap(x[i],y[i]);
}
for(int i=;i<=m;i++)
for(int j=i+;j<=m;j++)
if((x[i] <= x[j] && y[i] >= x[j] && y[i] <= y[j]) || (x[i] >= x[j] && x[i] <= y[j] && y[i] >= y[j]))
{
v[*i-].push_back(*j);
v[*j].push_back(*i-);
v[*j-].push_back(*i);
v[*i].push_back(*j-);
}
for(int i=;i<=*m;i++)
if(!dfn[i])
tarjan(i);
bool f=;
for(int i=;i<*m;i+=)
if(inans[i]==inans[i+])
{
f=;
break;
}
if(f)cout<<"the evil panda is lying again"<<endl;
else cout<<"panda is telling the truth..."<<endl;
return ;
}
/******************** ********************/

poj32072-sat模板题的更多相关文章

  1. [AHOI 2009] 维护序列(线段树模板题)

    1798: [Ahoi2009]Seq 维护序列seq Time Limit: 30 Sec  Memory Limit: 64 MB Description 老师交给小可可一个维护数列的任务,现在小 ...

  2. HDU 2222 AC自动机模板题

    题目: http://acm.hdu.edu.cn/showproblem.php?pid=2222 AC自动机模板题 我现在对AC自动机的理解还一般,就贴一下我参考学习的两篇博客的链接: http: ...

  3. POJ2774 & 后缀数组模板题

    题意: 求两个字符串的LCP SOL: 模板题.连一起搞一搞就好了...主要是记录一下做(sha)题(bi)过程心(cao)得(dan)体(xin)会(qing) 后缀数组概念...还算是简单的,过程 ...

  4. HDU 1251 Trie树模板题

    1.HDU 1251 统计难题  Trie树模板题,或者map 2.总结:用C++过了,G++就爆内存.. 题意:查找给定前缀的单词数量. #include<iostream> #incl ...

  5. HDU-3549 最大流模板题

    1.HDU-3549   Flow Problem 2.链接:http://acm.hdu.edu.cn/showproblem.php?pid=3549 3.总结:模板题,参考了 http://ww ...

  6. HDU 4280:Island Transport(ISAP模板题)

    http://acm.hdu.edu.cn/showproblem.php?pid=4280 题意:在最西边的点走到最东边的点最大容量. 思路:ISAP模板题,Dinic过不了. #include & ...

  7. HDU-2222 Keywords Search(AC自动机--模板题)

    题目大意:统计一共出现了多少次模板串. 题目分析:AC自动机的模板题.不过这题有坑,相同的模板串不能只算一次. 代码如下: # include<iostream> # include< ...

  8. Dancing Link --- 模板题 HUST 1017 - Exact cover

    1017 - Exact cover Problem's Link:   http://acm.hust.edu.cn/problem/show/1017 Mean: 给定一个由0-1组成的矩阵,是否 ...

  9. AC自动机 - 多模式串匹配问题的基本运用 + 模板题 --- HDU 2222

    Keywords Search Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)T ...

  10. POJ 2387 Til the Cows Come Home --最短路模板题

    Dijkstra模板题,也可以用Floyd算法. 关于Dijkstra算法有两种写法,只有一点细节不同,思想是一样的. 写法1: #include <iostream> #include ...

随机推荐

  1. 用table显示n条记录,每3行换一次颜色,即1,2,3用红色字体,4,5,6用绿色字体,7,8,9用红颜色字体。

    <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"% ...

  2. 洛谷 P2300 合并神犇

    洛谷 听说这题可以\(n^2\)水过去,不过这里介绍一种\(O(n)\)的做法. \(f[i]\)为第\(1-i\)位合并的次数. \(pre[i]\)为第\(1-i\)位最末尾的数. \(j\)为满 ...

  3. 前端基础-css(2)

    一.标准文档流 宏观的将,我们的web页面和ps等设计软件有本质的区别,web网页的制作,是个“流”,从上而下,像 “织毛衣”.而设计软件 ,想往哪里画东西,就去哪里画. 标准文档流下,有一些现象,比 ...

  4. 几分钟私人定制APP全攻略!!

    上网百度了一下什么是自媒体,你会看到这种介绍:自媒体(外文名:We Media)又称"公民媒体"或"个人媒体",是指私人化.平民化.普泛化.自主化的传播者,以现 ...

  5. 【MonogDB】The description of index(二) Embedded and document Index

    In this blog, we will talk about another the index which was called "The embedded ". First ...

  6. Angular学习笔记—架构简述

    这个架构图展现了 Angular 应用中的 8 个主要构造块: 模块 (module) 组件 (component) 模板 (template) 元数据 (metadata) 数据绑定 (data b ...

  7. vue中的锚点和查询字符串

    1.什么是锚点 锚点(achor):其实就是超链接的一种. 如:普通的超链接 <a href="sub_task_detail.php">详细</a>  主 ...

  8. __name__ = '__main__'有什么用

    很多新手刚开始学习python的时候经常会看到python 中__name__ = \'__main__\' 这样的代码,可能很多新手一开始学习的时候都比较疑惑,python 中__name__ = ...

  9. 第七课 GDB调试 (下)

    1序言: 通过前面一节第六课 GDB调试 (下)文章,可以掌握理解了gdb调试:怎么启动.运行,打断点.查看变量.甚至改变变量等的知识,今天来大概讲解下调试bug的类型. 2知识点: 2.1 就像之前 ...

  10. js 科学计数法

    function convertNum(num_str){ //参数必须为 字符串 //科学计数法字符 转换 为数字字符, 突破正数21位和负数7位的Number自动转换 // 兼容 小数点左边有多位 ...