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. 【译】对Rust中的std::io::Error的研究

    原文标题:Study of std::io::Error 原文链接:https://matklad.github.io/2020/10/15/study-of-std-io-error.html 公众 ...

  2. chrome实现网页高清截屏(F12、shift+ctrl+p、capture)

    打开需要载屏的网页,在键盘上按下F12,出现以下界面 上图圈出的部分有可能会出现在浏览器下方,这并没有关系.此时按下 Ctrl + Shift + P(Mac 为 ⌘Command +⇧Shift + ...

  3. RocketMQ 简介

    本文根据阿里云 RocketMQ产品文档整理 地址:https://help.aliyun.com/document_detail/29532.html?userCode=qtldtin2 简介 Ro ...

  4. 让微信小程序开发如鱼得水

      关于微信小程序开发一直想写一篇相关的文章总结和记录下,结果拖延症犯了迟迟没有下笔:这不最近天气不错,于是找一个空闲的下午将这篇文章输出下(好像跟天气没啥关系),那我们就开始吧! 注意:本文默认开发 ...

  5. 在kotlin用jni调用c++的dll中踩的坑

    在kotlin用jni调用c++的dll中踩的坑 can't find dependents libraries 不是个有效的32位程序(或者是?????32??????) 常规检查 java 指针 ...

  6. MYSQL 字符集设置(终端的字符集)

    每次利用终端 创建数据库或者创建表的时候,字符集都是latin1(不指定字符集的时候)如下: 查看当前数据库的字符集 character_set_client:客户端请求数据的字符集character ...

  7. 常用的N个网站建议收藏

    类型网站路径学习资源及博客论坛网站 书栈网:https://www.bookstack.cn 52 download: http://www.52download.cn/wpcourse/ 菜鸟教程: ...

  8. Python列表推导式玩法

    前言 列表做为python的基础,是必须学习的语法之一.一些基础的之前已经是反复温习和使用了,今天我们来学习它的进阶版-->列表推导式. 列表推导式: 优点:是将所有的值一次性加载到内存中,相比 ...

  9. linux线程数限制与zabbix监控

    Linux最大线程数限制及当前线程数查询 最大线程数计算方式: n = total_memory/128k; Linux用户线程数限制而导致的程序异常为 java.lang.OutOfMemoryEr ...

  10. 给mysql选择调度策略

    在gun/linux上,队列调度决定了到块设备的请求实际上发送到底层设置的顺序.默认情况下是cfg(完全公平排队)策略,随意使用的笔记本和台式机使用中个调度策略没有问题,并且有助于防止io饥饿,但是用 ...