【2-SAT】POJ3678-Katu Puzzle
【题目大意】
给出有向图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的更多相关文章
- 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 ...
- poj3678 Katu Puzzle 2-SAT
Katu Puzzle Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 6714 Accepted: 2472 Descr ...
- 【codeforces 761E】Dasha and Puzzle
[题目链接]:http://codeforces.com/contest/761/problem/E [题意] 给你一棵树,让你在平面上选定n个坐标; 使得这棵树的连接关系以二维坐标的形式展现出来; ...
- 【POJ】3678 Katu Puzzle
http://poj.org/problem?id=3678 题意:很幼稚的题目直接看英文题面= = #include <cstdio> #include <cstring> ...
- 【POJ2893&HDOJ6620】M × N Puzzle(n*m数码判定)
题意:给定一个n*m的矩阵,其中不重复地填[0,n*m-1],问是否能通过有限步数将0移到右下角 n,m<=1e3 思路:结论题 当板子了 #include<bits/stdc++.h&g ...
- POJ-3678 Katu Puzzle 2sat
题目链接:http://poj.org/problem?id=3678 分别对and,or,xor推出相对应的逻辑关系: 逻辑关系 1 0 A and B A'->A,B'->B ...
- POJ3678 Katu Puzzle
原题链接 \(2-SAT\)模板题. 将\(AND,OR,XOR\)转换成\(2-SAT\)的命题形式连边,用\(tarjan\)求强连通分量并检验即可. #include<cstdio> ...
- 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 ...
- 【WebApi系列】浅谈HTTP
[01]浅谈HTTP在WebApi开发中的运用 [02]聊聊WebApi体系结构 [03]详解WebApi如何传递参数 [04]详解WebApi测试和PostMan [05]浅谈WebApi Core ...
- 【WebApi系列】浅谈HTTP在WebApi开发中的运用
WebApi系列文章 [01]浅谈HTTP在WebApi开发中的运用 [02]聊聊WebApi体系结构 [03]详解WebApi参数的传递 [04]详解WebApi测试和PostMan [05]浅谈W ...
随机推荐
- .Net MVC4 上传大文件,并保存表单
1. 前台 cshtml </pre><pre name="code" class="csharp">@model BLL.BLL.Pr ...
- chrome://settings/content
chrome://settings/content C:\Users\用户名\AppData\Roaming\Microsoft\Internet Explorer chrome://version/
- python基础===python实现截图
python实现全屏截图: from PIL import ImageGrab im = ImageGrab.grab() im.save('F:\\12.png')
- 2015多校第6场 HDU 5354 Bipartite Graph CDQ,并查集
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5354 题意:求删去每个点后图是否存在奇环(n,m<=1e5) 解法:很经典的套路,和这题一样:h ...
- VI编辑,backspace无法删除解决方法
系统ubuntu 1,sudo apt-get install vim 安装vim 2, sudo vi /etc/vim/vimrc.tiny 修改 set compatible为set noc ...
- MySQL的sql_mode解析与设置
https://blog.csdn.net/hhq163/article/details/54140286 https://blog.csdn.net/ccccalculator/article/de ...
- 2.Python3标准库--文本
(一)string:文本常量和模板 1.函数 import string ''' string模块在最早的Python版本中就已经有了.以前这个模块中提供的很多函数已经移植到str对象中,不过这个模块 ...
- jQuery为多个元素绑定同一个事件
$('.toals,input[type=datetime]').on('focus',function(){ $('.footer-focus-none').css('display','none' ...
- 爬虫 requests模块高级用法
一 介绍 #介绍:使用requests可以模拟浏览器的请求,比起之前用到的urllib,requests模块的api更加便捷(本质就是封装了urllib3) #注意:requests库发送请求将网页内 ...
- 【DUBBO】dubbo的Router接口
Router服务路由, 根据路由规则从多个Invoker中选出一个子集AbstractDirectory是所有目录服务实现的上层抽象, 它在list列举出所有invokers后,会在通过Router服 ...