2-sat——hdu3062
对于怎么建边还是不太清楚
选了a,那么b c不选,所以连边
选了b或c,那么a必定不选
/*
每个点拆成i*2,i*2+1
队长选,那么队友不选
队长不选,那么队友必定要选
*/
#include<bits/stdc++.h>
using namespace std;
#define N 6005
#define M 2000005
struct Edge{int to,nxt;}e[M<<];
int n,m,head[N],tot; void add(int u,int v){
e[tot].to=v;e[tot].nxt=head[u];head[u]=tot++;
} int dfn[N],low[N],cnt,id[N],ind,stk[N],top,ins[N];
void tarjan(int x){
low[x]=dfn[x]=++ind;
stk[++top]=x;ins[x]=;
for(int i=head[x];i!=-;i=e[i].nxt){
int v=e[i].to;
if(!dfn[v]){
tarjan(v);
low[x]=min(low[x],low[v]);
}
else if(ins[v])
low[x]=min(low[x],low[v]);
}
if(low[x]==dfn[x]){
int y;cnt++;
do{
y=stk[top--];
ins[y]=;
id[y]=cnt;
}while(x!=y);
}
} void init(){
cnt=tot=ind=top=;
memset(head,-,sizeof head);
memset(dfn,,sizeof dfn);
memset(low,,sizeof low);
memset(ins,,sizeof ins);
} int main(){
while(cin>>n>>m){
init();
for(int i=;i<n;i++){
int a,b,c;
scanf("%d%d%d",&a,&b,&c);
a<<=,b<<=,c<<=;
add(a^,b),add(a^,c);
add(b^,a),add(c^,a);
}
for(int i=;i<m;i++){
int a,b;
scanf("%d%d",&a,&b);
a<<=,b<<=;
add(a,b^),add(b,a^);
}
for(int i=;i<**n;i++)
if(!dfn[i])tarjan(i); int flag=;
for(int i=;i<*n;i++)
if(id[i*]==id[i*+]){
puts("no");
flag=;
break;
}
if(!flag)puts("yes");
}
return ;
}
2-sat——hdu3062的更多相关文章
- 2-SAT(HDU-3062 party)
2-SAT(HDU-3062 party) 解决问题类型: 书本定义:给一个布尔方程,判断是否存在一组解使整个方程为真,被称为布尔方程可满足性问题(SAT) 因为本题只有0,1(丈夫 妻子只能去一个人 ...
- 多边形碰撞 -- SAT方法
检测凸多边形碰撞的一种简单的方法是SAT(Separating Axis Theorem),即分离轴定理. 原理:将多边形投影到一条向量上,看这两个多边形的投影是否重叠.如果不重叠,则认为这两个多边形 ...
- 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 ...
- Map Labeler POJ - 2296(2 - sat 具体关系建边)
题意: 给出n个点 让求这n个点所能建成的正方形的最大边长,要求不覆盖,且这n个点在正方形上或下边的中点位置 解析: 当然是二分,但建图就有点还行..比较难想..行吧...我太垃圾... 2 - s ...
- HDU3062&&HDU1814
Preface 两道2-SAT模板题. HDU3062 看题目就一眼2-SAT.一对夫妻看成一个变量,之间的矛盾可以看成限制. 考虑不同席的限制,相当于选了\(i\)就不选\(j\),即必选\(j'\ ...
- 学习笔记(two sat)
关于two sat算法 两篇很好的论文由对称性解2-SAT问题(伍昱), 赵爽 2-sat解法浅析(pdf). 一些题目的题解 poj 3207 poj 3678 poj 3683 poj 3648 ...
- LA 3211 飞机调度(2—SAT)
https://vjudge.net/problem/UVALive-3211 题意: 有n架飞机需要着陆,每架飞机都可以选择“早着陆”和“晚着陆”两种方式之一,且必须选择一种,第i架飞机的早着陆时间 ...
- HIT 1917 2—SAT
题目大意:一国有n个党派,每个党派在议会中都有2个代表, 现要组建和平委员会,要从每个党派在议会的代表中选出1人,一共n人组成和平委员会. 已知有一些代表之间存在仇恨,也就是说他们不能同时被选为和平委 ...
- 2 - sat 模板(自用)
2-sat一个变量两种状态符合条件的状态建边找强连通,两两成立1 - n 为第一状态(n + 1) - (n + n) 为第二状态 例题模板 链接一 POJ 3207 Ikki's Story IV ...
- SAT考试里最难的数学题? · 三只猫的温暖
问题 今天无意中在Quora上看到有人贴出来一道号称是SAT里最难的一道数学题,一下子勾起了我的兴趣.于是拿起笔来写写画画,花了差不多十五分钟搞定.觉得有点意思,决定把解题过程记下来.原帖的图太小,我 ...
随机推荐
- Day9, 进程、线程、协程篇
本节内容 操作系统发展史介绍 进程.与线程区别 python GIL全局解释器锁 线程 语法 join 线程锁之Lock\Rlock\信号量 将线程变为守护进程 Event事件 queue队列 生产者 ...
- 16-Ubuntu-文件和目录命令-切换目录-cd
cd(change directory),其功能为更改当前的工作目录. 注意:Linux所有的目录和文件名都是大小写敏感的. 命令 含义 cd 切换到当前用户的主目录(/home/用户目录) ...
- js面向对象编程:this究竟代表什么?第二篇
总觉得自己弄明确了js中this的含义.this总是指向调用方法的对象,作为方法调用,那么this就是指实例化的对象.但前几天自己写脚本却遇到了一个非常奇怪的问题. 代码例如以下: ...
- iOS开发系列-Lock
概述 我们在使用多线程的时候多个线程可能会访问同一块资源,这样就很容易引发数据错乱和数据安全等问题,这时候就需要我们保证每次只有一个线程访问这一块资源,锁 应运而生. iOS中锁之前的性能的图标排行: ...
- Shell 学习(三)
目录 Shell 学习(三) 流程控制 1 if判断 2 case 语句 3 for循环 4 while 循环 2 read 读取控制台输入 2.1 基本语法 2.2 应用实例 3 函数 3.1 系统 ...
- Impala系统架构
- ASP.NET MVC easyUI-datagrid 分页
本文写的是最简单的 按照API文档来写的分页.就是插件自带的分页效果. 一.html代码:field就是代表你后台数据的对应的列名. <table id="dg" class ...
- RAKsmart服务器受消费者青睐的原因
随着互联网的快速发展,网站建设变得越来越重要,现在很多做外贸网站的都会选择美国服务器来建设网站,近年来RAKsmart服务器受到广大站长的欢迎,那RAKsmart服务器受消费者青睐的关键是什么呢. 1 ...
- jQuery实现的文字逐行向上间歇滚动效果示例
<!doctype html> <html> <head> <meta charset="utf-8"> <title> ...
- Idea中创建maven骨架的命令
如下:通过命令化在Idea中创建骨架成功后,以后项目直接引用导入骨架直接在依赖框架上面进行相关模块开发: 1.mvn archetype:create-from-project 2.mvn clean ...