【题目大意】

给出有向图G(V, E),每条边(a,b)有一个值c(c=0或1)和运算符op,问能否找到这一张有向图,满足所有的a op b=c?

【思路】

显然是2-SAT。不过要注意一定,如a and b=1,若a=0是必定无解的。像这种情况,要连边a+n->a;同理所有类似于a or b=0,也要两边a->a+n。即无解清新要保证自己连到自己的相反情形。

 #include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<vector>
#include<stack>
using namespace std;
const int MAXN=+;
vector<int> E[MAXN];
stack<int> s;
int low[MAXN],dfn[MAXN],cnt=,bcnt=;
int instack[MAXN],b[MAXN];
int n,m; void addedge(int u,int v)
{
E[u].push_back(v);
} void tarjan(int u)
{
dfn[u]=low[u]=++cnt;
instack[u]=;
s.push(u);
for (int i=;i<E[u].size();i++)
{
int to=E[u][i];
if (!instack[to]) tarjan(to),low[u]=min(low[u],low[to]);
else if (instack[to]==) low[u]=min(low[u],dfn[to]);
} if (dfn[u]==low[u])
{
int x;
++bcnt;
do
{
x=s.top();s.pop();
instack[x]=;
b[x]=bcnt;
}while (x!=u);
}
} void init()
{
scanf("%d%d",&n,&m);
for (int i=;i<m;i++)
{
int a,b,c;char op[];
scanf("%d%d%d%s",&a,&b,&c,op);
a++,b++;
if (op[]=='A')
{
if (c==) addedge(a,b+n),addedge(b,a+n);
if (c==) addedge(a,b),addedge(b,a),addedge(a+n,a),addedge(b+n,b);
}
if (op[]=='O')
{
if (c==) addedge(a+n,b+n),addedge(b+n,a+n),addedge(a,a+n),addedge(b,b+n);
if (c==) addedge(a+n,b),addedge(b+n,a);
}
if (op[]=='X')
{
if (c==) addedge(a,b),addedge(b,a),addedge(a+n,b+n),addedge(b+n,a+n);
if (c==) addedge(a+n,b),addedge(b+n,a),addedge(a,b+n),addedge(b,a+n);
}
}
} void solve()
{
memset(instack,,sizeof(instack));
for (int i=;i<=*n;i++) if (!instack[i]) tarjan(i);
int flag=;
for (int i=;i<=n;i++)
if (b[i]==b[i+n])
{
flag=;
break;
}
puts(flag?"YES":"NO");
} int main()
{
init();
solve();
return ;
}

【2-SAT】POJ3678-Katu Puzzle的更多相关文章

  1. POJ3678 Katu Puzzle 【2-sat】

    题目 Katu Puzzle is presented as a directed graph G(V, E) with each edge e(a, b) labeled by a boolean ...

  2. poj3678 Katu Puzzle 2-SAT

    Katu Puzzle Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 6714   Accepted: 2472 Descr ...

  3. 【codeforces 761E】Dasha and Puzzle

    [题目链接]:http://codeforces.com/contest/761/problem/E [题意] 给你一棵树,让你在平面上选定n个坐标; 使得这棵树的连接关系以二维坐标的形式展现出来; ...

  4. 【POJ】3678 Katu Puzzle

    http://poj.org/problem?id=3678 题意:很幼稚的题目直接看英文题面= = #include <cstdio> #include <cstring> ...

  5. 【POJ2893&HDOJ6620】M × N Puzzle(n*m数码判定)

    题意:给定一个n*m的矩阵,其中不重复地填[0,n*m-1],问是否能通过有限步数将0移到右下角 n,m<=1e3 思路:结论题 当板子了 #include<bits/stdc++.h&g ...

  6. POJ-3678 Katu Puzzle 2sat

    题目链接:http://poj.org/problem?id=3678 分别对and,or,xor推出相对应的逻辑关系: 逻辑关系 1 0  A and B     A'->A,B'->B ...

  7. POJ3678 Katu Puzzle

    原题链接 \(2-SAT\)模板题. 将\(AND,OR,XOR\)转换成\(2-SAT\)的命题形式连边,用\(tarjan\)求强连通分量并检验即可. #include<cstdio> ...

  8. POJ 3678 Katu Puzzle(2 - SAT) - from lanshui_Yang

    Description Katu Puzzle is presented as a directed graph G(V, E) with each edge e(a, b) labeled by a ...

  9. 【WebApi系列】浅谈HTTP

    [01]浅谈HTTP在WebApi开发中的运用 [02]聊聊WebApi体系结构 [03]详解WebApi如何传递参数 [04]详解WebApi测试和PostMan [05]浅谈WebApi Core ...

  10. 【WebApi系列】浅谈HTTP在WebApi开发中的运用

    WebApi系列文章 [01]浅谈HTTP在WebApi开发中的运用 [02]聊聊WebApi体系结构 [03]详解WebApi参数的传递 [04]详解WebApi测试和PostMan [05]浅谈W ...

随机推荐

  1. C#编写程序监测某个文件夹内是否有文件进行了增,删,改的动作?

    新建一个Console应用程序,项目名称为“FileSystemWatcher”,Copy代码进,编译后就可以用了.代码如下: using System; using System.Collectio ...

  2. Kendo Grid:将Edit button 移到grid view 得顶部

    因为kendo grid 得toolbar 里不包括Edit button,所以我们要先用template 创建一个自定义得edit button,然后再对这个button实现edit 功能. < ...

  3. 集合框架源码学习之ArrayList

    目录: 0-0-1. 前言 0-0-2. 集合框架知识回顾 0-0-3. ArrayList简介 0-0-4. ArrayList核心源码 0-0-5. ArrayList源码剖析 0-0-6. Ar ...

  4. 史诗级Java/JavaWeb学习资源免费分享

    黑马内部视频+相关配套学习资料 Java Spring 技术栈构建前后台团购网站 Java SSM开发大众点评后端 欢迎关注微信公众号:Java面试通关手册 回复关键词: "资源分享第一波& ...

  5. 关于tcp连接对象在多进程中的错误:pickle.PicklingError

    如果需要在多进程中使用tcp连接的对象,那么不能再主进程中将这个对象创建好当做参数传给子进程,因为在创建子进程是需要序列化对象,然而socket对象是不能序列化的,会产生一个pickle.Pickli ...

  6. gcc中的内嵌汇编语言(Intel i386平台)

    [转]http://bbs.chinaunix.net/thread-2149855-1-1.html 一.声明  虽然Linux的核心代码大部分是用C语言编写的,但是不可避免的其中还是有一部分是用汇 ...

  7. Composer 手动安装

    Linux/Mac 环境 sudo wget -O /usr/local/bin/composer https://dl.laravel-china.org/composer.phar sudo ch ...

  8. 移动端测试===Android内存泄露和GC机制(转)

    本文转自:https://www.testwo.com/article/1153 1.前言 Hello,小伙伴们,相信大家在项目测试中都遇到过内存泄露问题,小编也着实爬过很多坑.比如小编所测项目,更换 ...

  9. centos_7.1.1503_src_1

    http://vault.centos.org/7.1.1503/os/Source/SPackages/ 389-ds-base-1.3.3.1-13.el7.src.rpm 31-Mar-2015 ...

  10. Dev的js智能提示

    VS中"工具"->"选项"->"文本编辑器"->"JavaScript"->"Inte ...