HDU3062 PARTY
Party
个人中,某些人之间有着很大的矛盾(当然夫妻之间是没有矛盾的),有矛盾的2个人是不会同时出现在聚会上的。有没有可能会有n 个人同时列席?
m: 表示有m 对矛盾关系 ( m <
(n - 1) * (n -1))
在接下来的m行中,每行会有4个数字,分别是 A1,A2,C1,C2
A1,A2分别表示是夫妻的编号
C1,C2 表示是妻子还是丈夫 ,0表示妻子 ,1是丈夫
夫妻编号从 0 到 n -1
否则输出 NO
1
0 1 1 1
_____________________________________
简单的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的更多相关文章
- HDU3062&&HDU1814
Preface 两道2-SAT模板题. HDU3062 看题目就一眼2-SAT.一对夫妻看成一个变量,之间的矛盾可以看成限制. 考虑不同席的限制,相当于选了\(i\)就不选\(j\),即必选\(j'\ ...
- 2-SAT(HDU-3062 party)
2-SAT(HDU-3062 party) 解决问题类型: 书本定义:给一个布尔方程,判断是否存在一组解使整个方程为真,被称为布尔方程可满足性问题(SAT) 因为本题只有0,1(丈夫 妻子只能去一个人 ...
- hdu3062(two-sat)
传送门:Party 题意:有n对夫妻被邀请参加一个聚会,因为场地的问题,每对夫妻中只有1人可以列席.在2n 个人中,某些人之间有着很大的矛盾(当然夫妻之间是没有矛盾的),有矛盾的2个人是不会同时出现在 ...
- HDU3062(2-SAT)
Party Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submi ...
- [HDU3062]Party(2-sat)
传送门 2-sat问题,只需要判断yes或no 所以可以直接连边,缩点,判断同一组的是否在同一个块中. #include <cstdio> #include <stack> # ...
- 二分+2-sat——hdu3062
hdu3622升级版 注意要保留两位小数 /* 给定n对圆心(x,y),要求从每对里找到一个点画圆,不可相交 使得最小半径最大 二分答案,设最小半径为r 然后两两配对一次进行判断,在2-sat上连边即 ...
- 2-sat——hdu3062
对于怎么建边还是不太清楚 选了a,那么b c不选,所以连边 选了b或c,那么a必定不选 /* 每个点拆成i*2,i*2+1 队长选,那么队友不选 队长不选,那么队友必定要选 */ #include&l ...
- 2-sat——hdu3062基础
hdu就是会卡cin,, 另一种建模方式,把点i拆成i*2,i*2+1,有时候这样会比较简单 #include<bits/stdc++.h> using namespace std; #d ...
- Party
hdu3062:http://acm.hdu.edu.cn/showproblem.php?pid=3062 题意:中文题. 题解:很明显的2-sat.然后要深刻理解命题和逆否命题.如这一题,c1,c ...
随机推荐
- Java串口编程例子
最近笔者接触到串口编程,网上搜了些资料,顺便整理一下.网上都在推荐使用Java RXTX开源类库,它提供了Windows.Linux等不同操作系统下的串口和并口通信实现,遵循GNU LGPL协议.看起 ...
- 基于Python的接口自动化实战-基础篇之pymysql模块操作数据库
引言 在进行功能或者接口测试时常常需要通过连接数据库,操作和查看相关的数据表数据,用于构建测试数据.核对功能.验证数据一致性,接口的数据库操作是否正确等.因此,在进行接口自动化测试时,我们一样绕不开接 ...
- 项目API接口鉴权流程总结
权益需求对接中,公司跟第三方公司合作,有时我们可能作为甲方,提供接口给对方,有时我们也作为乙方,调对方接口,这就需要API使用签名方法(Sign)对接口进行鉴权.每一次请求都需要在请求中包含签名信息, ...
- 【函数分享】每日PHP函数分享(2021-1-8)
explode() 使用一个字符串分割另一个字符串. array explode( string $delimiter , string $string [, int $limit ]) 参数描述de ...
- Dota游戏匹配的所有组合
在Dota游戏中有一种匹配玩法,任意5人以下玩家组队,加入匹配系统,由系统组合出5人 vs 5人的组合进行游戏,比如2人+3人 vs 1人+4人.抽象出这个问题,就变成两边各有m个玩家,最多允许n个 ...
- Sql Server Sum函数的特殊使用
利用Sql Server的Sum函数开窗得到累计值 具体详解https://www.cnblogs.com/zhaoshujie/p/9594676.html 个人示例例子 DECLARE @Sale ...
- 了解一下RPC,为何诞生RPC,和HTTP有什么不同?
了解一下RPC,为何诞生RPC,和HTTP有什么不同? 开篇提问 什么是RPC? 为什么需要RPC,用来解决什么问题? RPC与HTTP有什么不同? 你知道几种RPC? 认识RPC RPC:Remot ...
- 9. 细节见真章,Formatter注册中心的设计很讨巧
目录 本文提纲 版本约定 你好,我是A哥(YourBatman). Spring设计了org.springframework.format.Formatter格式化器接口抽象,对格式化器进行了大一统, ...
- 区间合并 C++
#include <iostream> #include <vector> #include <algorithm> using namespace std; ty ...
- python_字典(dict)
dict 一.结构: info = { "key":"value", "key":"value" } print(inf ...