hdu 3062
2-SAT的入门题;
网上说这个算法最好的入门教材是:伍昱的《由对称性解2-SAT问题》的ppt和赵爽的论文《2-SAT 解法浅析》;
看了一下伍昱的ppt,很好理解!
而这道题相对ppt里面的例子来说更加简单;
代码:
#include<cstdio>
#include<stack>
#include<vector>
#include<algorithm>
#include<cstring>
#define maxn 2010
using namespace std; vector<int>ve[maxn];
stack<int>s;
int low[maxn],dfn[maxn],b[maxn],nncount,cnt;
bool instack[maxn]; void tarjin(int u)
{
low[u]=dfn[u]=++nncount;
s.push(u);
instack[u]=;
int l=ve[u].size();
for(int i=;i<l;i++)
{
int v=ve[u][i];
if(!dfn[v])
{
tarjin(v);
low[u]=min(low[u],low[v]);
}
else if(instack[v])
low[u]=min(low[u],dfn[v]);
}
if(low[u]==dfn[u])
{
cnt++;
int v;
do
{
v=s.top();
s.pop();
b[v]=cnt;
instack[v]=;
}while(v!=u);
}
} int main()
{
int n,m,x,y,u,v;
while(scanf("%d%d",&n,&m)!=EOF)
{
for(int i=;i<*n;i++)
ve[i].clear();
memset(low,,sizeof low);
memset(dfn,,sizeof dfn);
memset(b,,sizeof b);
nncount=cnt=;
for(int i=;i<m;i++)
{
scanf("%d%d%d%d",&x,&y,&u,&v);
ve[(x<<)+u].push_back((y<<|)-v);
ve[(y<<)+v].push_back((x<<|)-u);
}
bool flag=;
for(int i=;i<*n;i++)
if(!dfn[i]) tarjin(i);
for(int i=;i<n;i++)
if(b[i<<]==b[i<<|]) {flag=;break;}
if(flag) puts("NO");
else puts("YES");
}
return ;
}
hdu 3062的更多相关文章
- HDU 3062 && HDU 1824 && POJ 3678 && BZOJ 1997 2-SAT
一条边<u,v>表示u选那么v一定被选. #include <iostream> #include <cstring> #include <cstdio> ...
- hdu 3062 Party 2-SAT
题目链接:HDU - 3062 有n对夫妻被邀请参加一个聚会,因为场地的问题,每对夫妻中只有1人可以列席.在2n 个人中,某些人之间有着很大的矛盾(当然夫妻之间是没有矛盾的),有矛盾的2个人是不会同时 ...
- hdu 3062 2-sat入门题
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3062 #include <cstdio> #include <cmath> # ...
- hdu 3062+1824(2-sat入门)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3062 思路:根据矛盾关系连边(如果a与b矛盾,则连边a'->b,b'->a),然后强连通缩 ...
- HDU 3062:Party(2-SAT入门)
http://acm.hdu.edu.cn/showproblem.php?pid=3062 题意:中文. 思路:裸的2-SAT.判断二元组的两个人是否在同一个强连通分量. 学习地址:http://w ...
- HDU 3062 Party
Party Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submi ...
- hdu 3062 2-SAT问题
思路:裸的2-SAT. #include<map> #include<set> #include<cmath> #include<queue> #inc ...
- 图论(2-sat):HDU 3062 Party
Party Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submi ...
- hdu 3062 2-Sat入门
开始学习2-Sat,前面看了对称性解决2-sat的ppt,很有帮助. 题意:n对夫妻,夫妻需要出席一人,给出不相容的关系,求每对是否能完成出席方案. 思路:通过关系建图,Tarjan缩点,然后进行判断 ...
随机推荐
- Java基础知识强化之IO流笔记58:内存操作流
1. 内存操作流: 用来操作处理临时存储的信息的. (1)操作字节数组: ByteArrayInputStream ByteArrayOutputStream 代码示例: package cn.itc ...
- Java基础知识强化之IO流笔记57:数据输入输出流(操作基本数据类型)
1. 数据输入输出流(操作基本数据类型) (1)数据输入流:DataInputStream DataInputStream(InputStream in) (2)数据输出流:DataOutputStr ...
- JSP 笔记
<%@ page contentType="text/html;charset=UTF-8"%> <!-- 字符编码为utf-8,不然会乱码.... --> ...
- 검색엔진의 크롤링과 인덱싱의 차이 (robots.txt 파일과 meta robots 태그의 차이점)
검색엔진의 크롤링과 인덱싱의 차이크롤링 제어는 robots.txt인덱싱 제어는 < meta name="robots" content="noindex& ...
- 万网免费主机wordpress快速建站教程-域名绑定及备案
进入主机管理界面,点击管理 点击域名绑定,绑定域名项选择已有域名,选择已购买的域名,点击一键解析域名,点击添加,即可完成域名解析工作. 由于没有备案,备案状态显示为未备案,点击旁边的备案链接,跳转至阿 ...
- NET环境下的未处理异常(unhandled exception)的解决方案
NET环境下的未处理异常(unhandled exception )的解决方案 .Net 框架提供了非常强大的异常处理机制,同时对一些非托管代码很难控制的系统问题比如指针越界,内存泄漏等提供了很好的解 ...
- .NET垃圾回收机制 转
在.NET Framework中,内存中的资源(即所有二进制信息的集合)分为"托管资源"和"非托管资源".托管资源必须接受.NET Framework的CLR( ...
- Oracle start with.connect by prior子句实现递归查询
Oracle中的select语句可以用start with...connect by prior子句实现递归查询,connect by 是结构化查询中用到的,其基本语法是: select ... fr ...
- Oracle hextoraw和rawtohex
Oracle hextoraw和rawtohex [日期:2012-07-17] 来源:Linux社区 作者:adrain_001 [字体:大 中 小] HEXTORAW 语法: HEXT ...
- 100个iOS开发面试题汇总-王刚韧的技术博客
100个iOS开发面试题汇总 关于iOS开发面试,不管对于招聘和应聘来说,面试都是很重要的一个环节,特别对于开发者来说,面试中的技术问题环节不仅是企业对应聘者技能和积累的考察,也是一个开发者自我检验的 ...