Party

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

_____________________________________

简单的2-SAT

______________________________________

 1 #include<cstdio>
2 #include<iostream>
3 #include<cstring>
4 #include<algorithm>
5 using namespace std;
6 const int maxn=1005;
7 bool bz;
8 int n,m;
9 struct edge
10 {
11 int u,v,nxt;
12 }e[maxn*maxn];
13 int head[maxn<<1],js;
14 void addage(int u,int v)
15 {
16 e[++js].u=u;e[js].v=v;
17 e[js].nxt=head[u];head[u]=js;
18 }
19 int dfn[maxn<<1],low[maxn<<1],cnt,st[maxn<<1],top,lts,lt[maxn<<1];
20 void init()
21 {
22 memset(head,0,sizeof head);
23 js=0;
24 memset(dfn,0,sizeof dfn);
25 memset(low,0,sizeof low);
26 cnt=0;
27 top=0;
28 lts=0;
29 memset(lt,0,sizeof lt);
30 bz=1;
31 }
32 void tarjan(int u)
33 {
34 low[u]=dfn[u]=++cnt;
35 st[++top]=u;
36 for(int i=head[u];i;i=e[i].nxt)
37 {
38 int v=e[i].v;
39 if(!dfn[v])
40 {
41 tarjan(v);
42 low[u]=min(low[u],low[v]);
43 }
44 else if(!lt[v]) low[u]=min(low[u],dfn[v]);
45 }
46 if(low[u]==dfn[u])
47 {
48 lt[u]=++lts;
49 while(st[top]!=u)lt[st[top--]]=lts;
50 --top;
51 }
52 }
53 int main()
54 {
55 while(scanf("%d%d",&n,&m)==2)
56 {
57 init();
58 for(int a,b,c,d,i=1;i<=m;++i)
59 {
60 scanf("%d%d%d%d",&a,&b,&c,&d);
61 ++a;++b;
62 addage(a+c*n,b+(d^1)*n);
63 addage(b+d*n,a+(c^1)*n);
64 }
65 for(int i=1;i<=(n<<1);++i)
66 if(!dfn[i])tarjan(i);
67 for(int i=1;i<=n;++i)
68 if(lt[i]==lt[i+n])
69 {
70 puts("NO");
71 bz=0;
72 break;
73 }
74 if(bz)puts("YES");
75 }
76 return 0;
77 }

HDU3062 PARTY的更多相关文章

  1. HDU3062&&HDU1814

    Preface 两道2-SAT模板题. HDU3062 看题目就一眼2-SAT.一对夫妻看成一个变量,之间的矛盾可以看成限制. 考虑不同席的限制,相当于选了\(i\)就不选\(j\),即必选\(j'\ ...

  2. 2-SAT(HDU-3062 party)

    2-SAT(HDU-3062 party) 解决问题类型: 书本定义:给一个布尔方程,判断是否存在一组解使整个方程为真,被称为布尔方程可满足性问题(SAT) 因为本题只有0,1(丈夫 妻子只能去一个人 ...

  3. hdu3062(two-sat)

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

  4. HDU3062(2-SAT)

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

  5. [HDU3062]Party(2-sat)

    传送门 2-sat问题,只需要判断yes或no 所以可以直接连边,缩点,判断同一组的是否在同一个块中. #include <cstdio> #include <stack> # ...

  6. 二分+2-sat——hdu3062

    hdu3622升级版 注意要保留两位小数 /* 给定n对圆心(x,y),要求从每对里找到一个点画圆,不可相交 使得最小半径最大 二分答案,设最小半径为r 然后两两配对一次进行判断,在2-sat上连边即 ...

  7. 2-sat——hdu3062

    对于怎么建边还是不太清楚 选了a,那么b c不选,所以连边 选了b或c,那么a必定不选 /* 每个点拆成i*2,i*2+1 队长选,那么队友不选 队长不选,那么队友必定要选 */ #include&l ...

  8. 2-sat——hdu3062基础

    hdu就是会卡cin,, 另一种建模方式,把点i拆成i*2,i*2+1,有时候这样会比较简单 #include<bits/stdc++.h> using namespace std; #d ...

  9. Party

    hdu3062:http://acm.hdu.edu.cn/showproblem.php?pid=3062 题意:中文题. 题解:很明显的2-sat.然后要深刻理解命题和逆否命题.如这一题,c1,c ...

随机推荐

  1. 图解HTTP权威指南(三)| Web服务器对HTTP请求的处理和响应

    作者简介   李先生(Lemon),高级运维工程师(自称),SRE专家(目标),梦想在35岁买一辆保时捷.喜欢钻研底层技术,认为底层基础才是王道.一切新技术都离不开操作系统(CPU.内存.磁盘).网络 ...

  2. 单细胞分析实录(3): Cell Hashing数据拆分

    在之前的文章里,我主要讲了如下两个内容:(1) 认识Cell Hashing:(2): 使用Cell Ranger得到表达矩阵.相信大家已经知道了cell hashing与普通10X转录组的差异,以及 ...

  3. PostgreSQL使用MySQL外表(mysql_fdw)

    postgres使用mysql外表 转载请注明出处https://www.cnblogs.com/funnyzpc/p/14223167.html 浅谈 postgres不知不觉已经升到了版本13,记 ...

  4. TextView上下滚动

    public class AutoTextView extends TextSwitcher implements ViewFactory { private float mHeight; priva ...

  5. Beta冲刺——第八天

    这个作业属于哪个课程 https://edu.cnblogs.com/campus/fzzcxy/2018SE1 这个作业要求在哪里 https://edu.cnblogs.com/campus/fz ...

  6. CentOS7 普通用户绕过root登录

      正常环境中我们的服务器都会使用一个普通用户跳转到root进行操作,如果root用户的密码不记得只知道普通用户密码,设备又不方便进行开关机破密码时,我们就可以用到以下方法登陆设备. pkexec : ...

  7. .NET的并发编程(TPL编程)是什么?

    写在前面 优秀软件的一个关键特征就是具有并发性.过去的几十年,我们可以进行并发编程,但是难度很大.以前,并发性软件的编写.调试和维护都很难,这导致很多开发人员为图省事放弃了并发编程.新版 .NET 中 ...

  8. Jenkins-自动部署,备份

    Jenkins-自动部署,备份 问题导入: 环境: CentOS 7,   Tomcat 8.5,   Jdk 1.8,   Maven 3.25 ,Jenkins war包 2.x 原因: 每次部署 ...

  9. C#使用ODP.NET连接oracle数据库

    ODP.NET:Oracle Data Provider for .NET 分为三种: ODP.NET, Managed Driver 不需要安装oracle客户端 ODP.NET,Unmanaged ...

  10. Dubbo中的统一契约是如何实现的?

    写在前面 之前,很多小伙伴私信我:如何才能快速的掌握Dubbo的核心原理和源码.所以,我写了一篇<我是如何在短期内快速掌握Dubbo的原理和源码的(纯干货)?>.对于Dubbo的源码解析系 ...