题意:

Party

Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 4035 Accepted Submission(s): 1300

Problem Description
有n对夫妻被邀请参加一个聚会,因为场地的问题,每对夫妻中只有1人可以列席。在2n 个人中,某些人之间有着很大的矛盾(当然夫妻之间是没有矛盾的),有矛盾的2个人是不会同时出现在聚会上的。有没有可能会有n 个人同时列席?
Input
n: 表示有n对夫妻被邀请 (n<= 1000)
m: 表示有m 对矛盾关系 ( m < (n - 1) * (n -1))

在接下来的m行中,每行会有4个数字,分别是 A1,A2,C1,C2
A1,A2分别表示是夫妻的编号
C1,C2 表示是妻子还是丈夫 ,0表示妻子 ,1是丈夫
夫妻编号从 0 到 n -1

Output
如果存在一种情况 则输出YES
否则输出 NO
Sample Input
2 1 0 1 1 1
Sample Output
YES

思路:
     基础的2sat,不会的建议看根据对称性解析2sat的那个, 把夫妻看成基础对,排斥的两个人看成排斥对,直接建边就行了,缩点我用的是双深搜的强连通。

#include<stdio.h>
#include<string.h>
#include<stack>#define N_node 2000 + 10
#define N_edge 2000000 + 100

using namespace std;typedef struct
{int to ,next;
}STAR;STAR E1[N_edge] ,E2[N_edge];
int list1[N_node] ,list2[N_node] ,tot;
int mark[N_node] ,Belong[N_node] ,cnt;
stack<int>st;void add(int a ,int b)
{E1[++tot].to = b;E1[tot].next = list1[a];list1[a] = tot;E2[tot].to = a;E2[tot].next = list2[b];list2[b] = tot;
}void DFS1(int s)
{mark[s] = 1;for(int k = list1[s] ;k ;k = E1[k].next){int xin = E1[k].to;if(!mark[xin]){mark[xin] = 1;DFS1(xin);}}st.push(s);
}void DFS2(int s)
{mark[s] = 1;Belong[s] = cnt;for(int k = list2[s] ;k ;k = E2[k].next){int xin = E2[k].to;if(!mark[xin]){mark[xin] = 1;DFS2(xin);}}
}int main ()
{int n ,m ,i ,a ,b ,c ,d;while(~scanf("%d %d" ,&n ,&m)){memset(list1 ,0 ,sizeof(list1));memset(list2 ,0 ,sizeof(list2));tot = 1;for(i = 1 ;i <= m ;i ++){scanf("%d %d %d %d" ,&a ,&b ,&c ,&d);a = a * 2 + c,b = b * 2 + d;add(a ,b^1) ,add(b ,a^1);}while(!st.empty()) st.pop();memset(mark ,0 ,sizeof(mark));for(i = 1 ;i <= n * 2 - 1 ;i ++)if(!mark[i])DFS1(i);memset(mark ,0 ,sizeof(mark));cnt = 0;while(!st.empty()){int xin = st.top();st.pop();if(!mark[xin]){++cnt;DFS2(xin);}} int mk = 0;for(i = 0 ;i < n ;i += 2){if(Belong[i] == Belong[i^1])mk = 1;}if(mk)puts("NO");else puts("YES");}return 0;
}


hdu 3062 基础的2sat相关推荐

  1. HDU 3062 Party(2-sat题模板+tarjan )

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

  2. 【 HDU - 3062】Party(2-sat)

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

  3. hdu 3062 Party(2-sat,3级)

    Party Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Subm ...

  4. Hdu 3062. Party

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

  5. HDU 3062 Party

    2-SAT入门题,强联通分量缩点之后,如果夫妻位于同一强联通分量,则无解. #include<cstdio> #include<cstring> #include<cma ...

  6. hdu 5326(基础题) work

    http://acm.hdu.edu.cn/showproblem.php?pid=5326 一道水题,题目大意是在公司里,给出n个员工和目标人数m,然后下面的n-1行是表示员工a管理b,问在这些员工 ...

  7. HDU 1814 Peaceful Commission(2-SAT)

    题目链接:http://acm.split.hdu.edu.cn/showproblem.php?pid=1814 题意: 要建立一个和平委员会,要满足以下条件: 每个党派都在委员会中恰有1个代表, ...

  8. hdu 1850 基础尼姆博奕

    Being a Good Boy in Spring Festival Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32 ...

  9. hdu 2110 基础母函数

    题意:退出本身并不麻烦,麻烦的是,退出的人需要取走相应比例(1/3)金额的资产. 假设公司此时一共有n种价值的资产,每种价值的资产数量已知,请帮助心烦意乱的XHD夫妇计算一共有多少种分割资产的方法. ...

最新文章

  1. 集成公司内部的多个子系统(兼容B/S和C/S),实现单点登录功能的多系统的统一入口功能...
  2. 【c语言】蓝桥杯算法训练 平方计算
  3. struts 数据库连接
  4. pip安装更新、第三方库对应的python解释器版本、pip安装第三方库,压缩包离线安装,pycharm快捷安装及pycharm中terminal的使用,timeout超时报错
  5. 批量生成6位数字_分享一款可做各种流水号的条码生成软件
  6. linux下简单的备份的脚本 2 【转】
  7. python输入日期计算天数_用python计算日期(1、返回指定日期所在的一周,2,计算一个日期的月份和天数加减)...
  8. 网页特效java代码,美化网页常用特效代码
  9. mac电脑如何与手机同步复制粘贴_如何将电脑里的文件同步到手机里?
  10. oracle sql within,Oracle SQL Model Clause
  11. 引用计数器法 可达性分析算法_面试官:你说你熟悉jvm?那你讲一下并发的可达性分析...
  12. python面向对象——类(中)
  13. VirtualBox安装MAC时,只有光驱(Sierra Custom Installer)没有硬盘怎么办
  14. 从Spice Model到模拟IC设计的心路历程
  15. 小米8刷Magisk工具详细教程以及问题的解决方案
  16. 《OpenCV 4.5计算机视觉开发实战(基于VC++)》示例代码免费下载
  17. EBS开发_导入物料编码
  18. Android 自定义锁屏 监听系统消息推送
  19. 自己对香港一卡通的总结
  20. Inception(盗梦空间)及代码实现

热门文章

  1. 用linux下常用命令wget进行整站下载(递归下载至本地)
  2. C# WebBrowser document.execCommand()解析
  3. 布局技巧:使用ViewStub
  4. 在SQL中使用convert函数进行日期的查询
  5. 重温经典之《企业应用架构模式》——.NET中的架构模式运用 (Base Patterns 1)
  6. PCB 围绕CAM自动化,打造PCB规则引擎
  7. WINDOWS下安装MYSQL—图文详解
  8. Android 自定义ListView单击事件失效
  9. [51nod]1284 2 3 5 7的倍数(容斥原理)
  10. Python Selenium + phantomJS 模拟登陆教务管理系统 “抢课”