#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<iostream>
#include<algorithm>
#include<queue>
#include<cmath>
#include<stack>
using namespace std;
#define Maxn 1010
#define Maxm 1000010 char s[];
int n,m; struct node
{
int x,y,next;
}t[*Maxm];int len;
int first[*Maxn]; void ins(int x,int y)
{
t[++len].x=x;t[len].y=y;
t[len].next=first[x];first[x]=len;
} bool mark[*Maxn];
int S[*Maxn]; bool dfs(int x)
{
if(mark[x^]) return ;
if(mark[x]) return ;
S[++S[]]=x;mark[x]=;
for(int i=first[x];i;i=t[i].next)
{
int y=t[i].y;
if(!dfs(y)) return ;
}
return ;
} bool tsat()
{
for(int i=;i<n;i++)
{
if(!mark[*i]&&!mark[*i+])
{
S[]=;
if(!dfs(*i))
{
while(S[]) mark[S[S[]--]]=;
if(!dfs(*i+)) return ;
}
}
}
return ;
} int main()
{
scanf("%d%d",&n,&m);
len=;
memset(first,,sizeof(first));
for(int i=;i<=m;i++)
{
int x,y,z;
scanf("%d%d%d",&x,&y,&z);
scanf("%s",s);
if(s[]=='A')
{
if(z==)
{
ins(*x,*y);ins(*x,*y+);
ins(*y,*x);ins(*y,*x+);
}
else
{
ins(*x+,*y);
ins(*y+,*x);
}
}
else if(s[]=='O')
{
if(z==)
{
ins(*x,*y+);
ins(*y,*x+);
}
else
{
ins(*x+,*y);ins(*x+,*y+);
ins(*y+,*x);ins(*y+,*x+);
}
}
else if(s[]=='X')
{
if(z==)
{
ins(*x,*y+);ins(*x+,*y);
ins(*y,*x+);ins(*y+,*x);
}
else
{
ins(*x,*y);ins(*x+,*y+);
ins(*y,*x);ins(*y+,*x+);
}
}
}
if(tsat()) printf("YES\n");
else printf("NO\n");
return ;
}

2-SAT

2016-11-17 22:00:10

【无聊放个模板系列】POJ 3678 2-SAT的更多相关文章

  1. 【无聊放个模板系列】POJ 1274 (匈牙利)

    #include<cstdio> #include<cstdlib> #include<cstring> #include<iostream> #inc ...

  2. 【无聊放个模板系列】BZOJ 3172 (AC自动机)

    #include<cstdio> #include<cstdlib> #include<cstring> #include<iostream> #inc ...

  3. 【无聊放个模板系列】POJ2752 EXKMP

    #include<cstdio> #include<cstdlib> #include<cstring> #include<iostream> #inc ...

  4. 【无聊放个模板系列】HDU 3506 (四边形不等式优化DP-经典石子合并问题[环形])

    #include<cstdio> #include<cstdlib> #include<cstring> #include<iostream> #inc ...

  5. 【无聊放个模板系列】BZOJ 1597 斜率优化

    STL 双向队列DEQUE版本 #include<cstdio> #include<cstdlib> #include<cstring> #include<i ...

  6. 【无聊放个模板系列】HDU 1269 (SCC)

    #include<cstdio> #include<cstdlib> #include<cstring> #include<iostream> #inc ...

  7. 【无聊放个模板系列】HDU 1358 KMP

    #include<cstdio> #include<cstdlib> #include<cstring> #include<iostream> #inc ...

  8. 【无聊放个模板系列】HDU 3068 MANACHER

    #include<cstdio> #include<cstdlib> #include<cstring> #include<iostream> #inc ...

  9. HDU 3062 && HDU 1824 && POJ 3678 && BZOJ 1997 2-SAT

    一条边<u,v>表示u选那么v一定被选. #include <iostream> #include <cstring> #include <cstdio> ...

随机推荐

  1. ZigBee2006,2007,pro各个版本的区别

    文章转载自http://home.eeworld.com.cn/my/space-uid-361439-blogid-224722.html

  2. shell命令行快速编辑命令

    ctrl r:命令行出现 reverse-i-search,输入字符将在输入历史中匹配命令 ctrl p:向前翻看历史 ctrl n:向后翻看历史 ctrl a:命令行首 ctrl e:命令行尾 ct ...

  3. 谈谈Nullable<T>的类型转换问题

    本篇文章讨论可空值类型(Nullable<T>)的转换,却确地说是如何将一种类型的值对象转换成相应的可空值.这来源于今天我们的一个成员遇到的一个小问题,我经过一些整理写了这篇文章.虽然没有 ...

  4. 关于apache Alias斜杠/的实验

    1.Alias /icons/ "D:/wamp/bin/apache/Apache2.2.17/icons/" 访问http://localhost/icons/正常,访问htt ...

  5. java concurrent包的学习(转)

    java concurrent包的学习(转) http://my.oschina.net/adwangxiao/blog/110188 我们都知道,在JDK1.5之前,Java中要进行业务并发时,通常 ...

  6. IAR ERROR --- [Li006]

    今天移植代码时遇到一个比较奇葩的问题,记录如下: Error[Li006]: duplicate definitions for "Uart3"; in "E:\IAR_ ...

  7. 如何建立一个“绑定友好的”usercontrol--wpf

    如何建立一个"绑定友好的"usercontrol--wpf 这几天在打算将以前用winform写的工具程序重构到wpf,顺便学习理解看过的wpf的知识. 因为程序设计到一个Exce ...

  8. 布局—column(属性)

    column-width:||用来定义多列中每列的宽度,用像素表示column-count:||用来定义多列中的列数,用数字来表示1-10columns: 200px 2||列宽和列数column-g ...

  9. Django Tutorial 学习笔记

    实际操作了Django入门教程中的范例,对一些细节有了更清晰的掌握.感觉只看文档不动手是不行的,只看文档没法真正掌握其中要素之间的关系,看了很多遍也不行,必须动手做了才能掌握.同时,这次练习在Ecli ...

  10. liger grid loadData

    function fn_Search() { var beginDt = $("#txtBegin").val(); var endDt = $("#txtEnd&quo ...