HDU 3062 Party 裸 2-sat
#include <iostream>
#include <cstdio>
#include <cstring>
using namespace std;
const int maxn = 2100;
struct node{
int v,next;
}edge[maxn*maxn];
int head[maxn],res[1005*1005][2],low[maxn],dfn[maxn],stack[maxn],in[maxn];
int n,m,id,clock,top; void add_edge(int u,int v){
edge[id].v = v;edge[id].next = head[u];head[u] = id++;
}
void init(){
int c1,c2;
scanf("%d",&m);
id = 0;memset(head,-1,sizeof(head));
for( int i = 0; i < m; i++){
scanf("%d%d%d%d",&res[i][0],&res[i][1],&c1,&c2);
res[i][0] = res[i][0]*2 + c1;
res[i][1] = res[i][1]*2 + c2;
//两个方向必须相反,否则求出的结果会不对
add_edge(res[i][0],res[i][1]^1);
add_edge(res[i][1],res[i][0]^1);
}
}
void tarjan(int u){
low[u] = dfn[u] = ++clock;
stack[top++] = u;
in[u] = 1;
for(int id = head[u]; id != -1 ; id = edge[id].next){
int v = edge[id].v;
if( !dfn[v] ){
tarjan(v);
low[u] = low[u] < low[v] ? low[u] : low[v];
}
else if( in[v] && low[u] > dfn[v])
low[u] = dfn[v];
}
if( low[u] == dfn[u]){
do{
in[stack[--top]] = 0;
}while( u != stack[top]);
}
} int main(){
//freopen("in.txt","r",stdin);
int i;
while( ~scanf("%d",&n)){
init();
memset(dfn,0,sizeof(dfn));
memset(in,0,sizeof(0));
clock = top = 0;
for( i = 0; i < n*2 ; i++)
if( !dfn[i])
tarjan(i);
for( i = 0; i < m; i++)//在同一个强连通分量中的low值相等
if(low[res[i][0]] == low[res[i][1]])
break;
if( i < m )puts("NO");
else puts("YES");
}
return 0;
}
HDU 3062 Party 裸 2-sat的更多相关文章
- 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:Party(2-SAT入门)
http://acm.hdu.edu.cn/showproblem.php?pid=3062 题意:中文. 思路:裸的2-SAT.判断二元组的两个人是否在同一个强连通分量. 学习地址:http://w ...
- HDU 1102 最小生成树裸题,kruskal,prim
1.HDU 1102 Constructing Roads 最小生成树 2.总结: 题意:修路,裸题 (1)kruskal //kruskal #include<iostream> ...
- HDU(1856),裸的带权并查集
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1856 题意:朋友圈问题,A和B是朋友,B和C是朋友则A和C也是朋友,依次类推,题目的意思就是求最大的朋 ...
- 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 2-SAT问题
思路:裸的2-SAT. #include<map> #include<set> #include<cmath> #include<queue> #inc ...
- HDU 1213(裸并查集)(无变形)
题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=1213 How Many Tables Time Limit: 2000/1000 MS (Java/ ...
随机推荐
- centos7上搭建zookeeper集群
1.下载zookeeper http://www.apache.org/dyn/closer.cgi/zookeeper/ 可以登录这个网站下载,然后上传到 centos上 修改成自己需要的版本 , ...
- 【iOS】file not found: .../Build/Products/Debug-iphonesimulator file not found
今天又遇到了这个问题: ld: file not found: /Users/***/Library/Developer/Xcode/DerivedData/***-dfscappaygvbougtb ...
- linux字符设备驱动中内核如何调用驱动入口函数 一点记录
/* 内核如何调用驱动入口函数 ? *//* 答: 使用module_init()函数,module_init()函数定义一个结构体,这个结构体里面有一个函数指针,指向first_drv_init() ...
- apache安装zip包安装(非exe)
安装步骤如下: (1) 下载apache安装程序 进入官网:选择一个版本的apache 选择红色区域的内容,在之后进入的页面中: 选择红色区域的内容,进入页面: 现则VC9的进行下载. (2) 安装 ...
- 使用用树莓派打造远程WEB服务器
简介:系统配置Raspberry Pi 3B + Raspbian + MySQL5.7 + Tomcat 9 + Nginx + 公网IP. 工具:Win32DiskImager .FileZill ...
- 恐怖的Hibernate和JavaFX Table CallBack!
目录 [隐藏] 1 Hibernate 2 JavaFX Table Hibernate 最近在做 JavaFX 应用,不管再怎么避免数据持久化,但面对几十万的数据量的时候也只能乖乖的去配置持久层框架 ...
- 在一个含有1-n的序列中,每次找到第Ki小的数,并把它删除(线段树)
提交链接 Data structure is one of the basic skills for Computer Science students, which is a particular ...
- alluxio源码解析-层次化存储(4)
层次化存储-特性介绍: https://www.alluxio.org/docs/1.6/cn/Tiered-Storage-on-Alluxio.html 引入分层存储后,Alluxio管理的数据块 ...
- 简单设计企业级JOB平台
前言 在企业级项目中有许多能够用到定时任务的场景例如: 在某个时间点统一给某些用户发送邮件信息 接口表数据发送 某月某日更新报表数据 ...... 目前我们使用SpringBoot快速整合Quartz ...
- Spring入门(九):运行时值注入
Spring提供了2种方式在运行时注入值: 属性占位符(Property placeholder) Spring表达式语言(SpEL) 1. 属性占位符 1.1 注入外部的值 1.1.1 使用Envi ...