http://acm.hdu.edu.cn/showproblem.php?pid=3062

题意:中文。

思路:裸的2-SAT。判断二元组的两个人是否在同一个强连通分量。

学习地址:http://www.cnblogs.com/ambition/archive/2011/07/30/2-sat.html

 #include <bits/stdc++.h>
using namespace std;
#define N 2010
struct Edge {
int u, v, nxt;
} edge[N*N*];
int head[N], tot, belong[N], num, dfn[N], low[N], vis[N], tid;
stack<int> sta; void Add(int u, int v) {
edge[tot] = (Edge) { u, v, head[u] }; head[u] = tot++;
} void init() {
memset(head, -, sizeof(head));
memset(vis, , sizeof(vis));
memset(dfn, , sizeof(dfn));
memset(low, , sizeof(low));
tot = num = tid = ;
while(!sta.empty()) sta.pop();
} void tarjan(int u) {
dfn[u] = low[u] = ++tid;
vis[u] = ; sta.push(u);
for(int i = head[u]; ~i; i = edge[i].nxt) {
int v = edge[i].v;
if(!dfn[v]) {
tarjan(v);
if(low[u] > low[v]) low[u] = low[v];
} else if (vis[v]) {
if(low[u] > dfn[v]) low[u] = dfn[v];
}
}
if(low[u] == dfn[u]) {
num++;
while(true) {
int x = sta.top(); sta.pop();
belong[x] = num;
vis[x] = ;
if(x == u) break;
}
}
} int main() {
int n, m;
while(~scanf("%d", &n)) {
scanf("%d", &m); init();
for(int i = ; i < m; i++) {
int a, b, c, d;
scanf("%d%d%d%d", &a, &b, &c, &d);
Add(a * + c, b * + (d + ) % );
Add(b * + d, a * + (c + ) % );
}
for(int i = ; i < * n; i++) if(!dfn[i]) tarjan(i);
bool flag = ;
for(int i = ; i < n; i++)
if(belong[i*] == belong[i*+]) flag = ;
if(flag) puts("YES");
else puts("NO");
}
return ;
}

HDU 3062:Party(2-SAT入门)的更多相关文章

  1. hdu 3062 Party 2-SAT

    题目链接:HDU - 3062 有n对夫妻被邀请参加一个聚会,因为场地的问题,每对夫妻中只有1人可以列席.在2n 个人中,某些人之间有着很大的矛盾(当然夫妻之间是没有矛盾的),有矛盾的2个人是不会同时 ...

  2. HDU 3062 && HDU 1824 && POJ 3678 && BZOJ 1997 2-SAT

    一条边<u,v>表示u选那么v一定被选. #include <iostream> #include <cstring> #include <cstdio> ...

  3. HDU 1231 最大连续子序列 --- 入门DP

    HDU 1231 题目大意以及解题思路见: HDU 1003题解,此题和HDU 1003只是记录的信息不同,处理完全相同. /* HDU 1231 最大连续子序列 --- 入门DP */ #inclu ...

  4. HDU 1312 Red and Black --- 入门搜索 BFS解法

    HDU 1312 题目大意: 一个地图里面有三种元素,分别为"@",".","#",其中@为人的起始位置,"#"可以想象 ...

  5. HDU 1312 Red and Black --- 入门搜索 DFS解法

    HDU 1312 题目大意: 一个地图里面有三种元素,分别为"@",".","#",其中@为人的起始位置,"#"可以想象 ...

  6. hdu 3062 2-sat入门题

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3062 #include <cstdio> #include <cmath> # ...

  7. hdu 3062+1824(2-sat入门)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3062 思路:根据矛盾关系连边(如果a与b矛盾,则连边a'->b,b'->a),然后强连通缩 ...

  8. hdu 3062 2-Sat入门

    开始学习2-Sat,前面看了对称性解决2-sat的ppt,很有帮助. 题意:n对夫妻,夫妻需要出席一人,给出不相容的关系,求每对是否能完成出席方案. 思路:通过关系建图,Tarjan缩点,然后进行判断 ...

  9. hdu 2602 Bone Collector 背包入门题

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2602 题目分析:0-1背包  注意dp数组的清空, 二维转化为一维后的公式变化 /*Bone Coll ...

随机推荐

  1. pip 9.0 离线安装Python3的环境库

    到客户现场实施,很多情况下是没有网络的,我们需要在办公室准备好离线安装包. 假设现有已联网的客户机A,一台无网络的客户机B 客户机A 1.生成本地环境的包清单 pip3 freeze > req ...

  2. [AC自己主动机+可能性dp] hdu 3689 Infinite monkey theorem

    意甲冠军: 给n快报,和m频率. 然后进入n字母出现的概率 然后给目标字符串str 然后问m概率倍的目标字符串是敲数量. 思维: AC自己主动机+可能性dp简单的问题. 首先建立trie图,然后就是状 ...

  3. iOS_9_scrollView分页

    最后效果图: BeyondViewController.h // // BeyondViewController.h // 8_scrollVIew分页浏览 // // Created by beyo ...

  4. Emgu-WPF学习使用 - 颜色映射

    原文:Emgu-WPF学习使用 - 颜色映射 string sFile = ""; if (!String.IsNullOrEmpty(AppConstUtils.GDefault ...

  5. LeapMotion Demo1

    原文:LeapMotion Demo1     LeapMotion SDK For c# 只提供了一个Sample.cs.   Leap Motion App Home 可以给初入手者提供很好的用户 ...

  6. TThreadList Demo

    type TForm1 = class(TForm) Button1: TButton; Button3: TButton; ListBox1: TListBox; Button2: TButton; ...

  7. 【shell】编译脚本

    #!/bin/bash #设置环境变量 export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64 export JRE_HOME=${JAVA_HOME}/ ...

  8. ubuntu Linux 操作系统安装与配置

    Ubuntu是一个以桌面应用为主的Linux操作系统.Ubuntu每六个月发布一个新版本(一般是4和10月份,命名为YY.MM),每一个普通版本都将被支持 18个月,长期支持版(Long Term S ...

  9. 原创powershell脚本:通过远程桌面3389黑名单,阻止黑客ip

    远程桌面 3389 ban ip 防火墙 rdp   通过远程桌面3389黑名单,阻止黑客ip.这是一个常见的需求.但我搜遍了谷歌也找不到成品脚本.想做搬运工却做不成,只能自己费尽写.下载备用吧,估计 ...

  10. spring 5.x 系列第18篇 —— 整合websocket (代码配置方式)

    源码Gitub地址:https://github.com/heibaiying/spring-samples-for-all 一.说明 1.1 项目结构说明 项目模拟一个简单的群聊功能,为区分不同的聊 ...