题目大意:

有n对的人,编号从1-2*n,m对的人之间互相不喜欢,每对人中必徐选1个人加入和平委员会,求字典序最小的解

————————————————————————————————

2-SAT问题,由于要最小字典序,就不能scc的方法求了,只能暴力染色。O(n*m)

————————————————————————————————

 1 #include<iostream>
2 #include<cstdio>
3 #include<cstring>
4 #include<algorithm>
5 using namespace std;
6 const int maxn=16020;
7 const int maxm=4e4+20;
8 int n,m;
9 struct edge
10 {
11 int u,v,nxt;
12 }e[maxm];
13 int head[maxn],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 clo[maxn],st[maxn],top;
20 bool dfs(int x)
21 {
22 if(clo[x]==1)return 1;
23 if(clo[x]==2)return 0;
24 clo[x]=1;clo[x^1]=2;
25 st[++top]=x;
26 for(int i=head[x];i;i=e[i].nxt)
27 {
28 int v=e[i].v;
29 if(!dfs(v))return 0;
30 }
31 return 1;
32 }
33 bool sat()
34 {
35 memset(clo,0,sizeof clo);
36 for(int i=0;i<(n<<1);i+=2)
37 {
38 if(clo[i])continue;
39 top=0;
40 if(!dfs(i))
41 {
42 while(top)clo[st[top]]=0,clo[st[top--]^1]=0;
43 if(!dfs(i^1))return 0;
44 }
45 }
46 return 1;
47 }
48 void init()
49 {
50 memset(head,0,sizeof head);
51 js=0;
52 memset(clo,0,sizeof clo);
53 memset(st,0,sizeof st);
54
55 }
56 int main()
57 {
58 while(scanf("%d%d",&n,&m)==2)
59 {
60 init();
61 for(int a,b,i=1;i<=m;++i)
62 {
63 scanf("%d%d",&a,&b);
64 --a,--b;
65 addage(a,b^1);
66 addage(b,a^1);
67 }
68 if(sat())
69 {
70 for(int i=0;i<=(n<<1);++i)
71 if(clo[i]==1)printf("%d\n",i+1);
72 }
73 else puts("NIE");
74 }
75 return 0;
76 }

HDU1814和平委员会的更多相关文章

  1. 【POI2001】【HDU1814】和平委员会

    题面 Description 根据宪法,Byteland民主共和国的公众和平委员会应该在国会中通过立法程序来创立. 不幸的是,由于某些党派代表之间的不和睦而使得这件事存在障碍. 此委员会必须满足下列条 ...

  2. HDU 1814 Peaceful Commission / HIT 1917 Peaceful Commission /CJOJ 1288 和平委员会(2-sat模板题)

    HDU 1814 Peaceful Commission / HIT 1917 Peaceful Commission /CJOJ 1288 和平委员会(2-sat模板题) Description T ...

  3. [模板]2-SAT 问题&和平委员会

    tarjan的运用 this is a problem:link 2-SAT处理的是什么 首先,把「2」和「SAT」拆开.SAT 是 Satisfiability 的缩写,意为可满足性.即一串布尔变量 ...

  4. [POI2001]和平委员会

    题目描述 根据宪法,Byteland民主共和国的公众和平委员会应该在国会中通过立法程序来创立. 不幸的是,由于某些党派代表之间的不和睦而使得这件事存在障碍. 此委员会必须满足下列条件: 每个党派都在委 ...

  5. COGS:313. [POI2001] 和平委员会

    313. [POI2001] 和平委员会 ★★☆   输入文件:spo.in   输出文件:spo.out   评测插件时间限制:1 s   内存限制:128 MB 题目描述 根据宪法,Bytelan ...

  6. LOJ10097和平委员会

    POI 2001 根据宪法,Byteland民主共和国的公众和平委员会应该在国会中通过立法程序来创立. 不幸的是,由于某些党派代表之间的不和睦而使得这件事存在障碍. 此委员会必须满足下列条件: 每个党 ...

  7. cogs 313. [POI2001] 和平委员会(2-SAT

    http://cogs.pro:8080/cogs/problem/problem.php?pid=pyzQimjkj 题意:有n个集合,每个集合有俩元素,要从n个中各选一个放一堆,但是有的俩不能同时 ...

  8. P5782-[POI2001]和平委员会【2-SAT】

    正题 题目链接:https://www.luogu.com.cn/problem/P5782 题目大意 \(n\)对人,每对之间恰好有一个人出席.\(m\)对仇恨关系表示两个人不能同时出席. 求是否有 ...

  9. 算法学习笔记:2-SAT

    SAT 是适定性(Satisfiability)问题的简称.一般形式为 k - 适定性问题,简称 k-SAT.而当 \(k>2\) 时该问题为 NP 完全的.所以我们只研究 \(k=2\) 的情 ...

随机推荐

  1. easyui中给table列表中加序号

    $('#xyData_healthList').datagrid({ width: 'auto', height: 'auto', striped: true, fit: true, paginati ...

  2. 【超级经典】程序员装B指南(转)

    一.准备工作   "工欲善其事必先利其器." 1.电脑不一定要配置高,但是双屏是必须的,越大越好,能一个横屏一个竖屏更好.一个用来查资料,一个用来写代码.总之要显得信息量很大,效率 ...

  3. Android驱动学习-APP操作新硬件的两种方法(支持添加的驱动)

    在给Android添加新的驱动后,app要如何使用呢? 正常的使用一个设备,需要getService.但是像LED等我们自己添加的硬件驱动,Android源代码根本没有我们自己添加的服务. 第一种: ...

  4. 前端JS获取用户位置

    精确至城市 (基于腾讯位置服务的IP定位,需申请KEY)

  5. web前台界面的两种验证方式

    JSON的全称是"JavaScript Object Notation",意思是JavaScript对象表示法,它是一种基于文本,独立于语言的轻量级数据交换格式. 第一种: 用户体 ...

  6. 关于Byte(1) 与int (1) 比较原理

    最近笔者遇到一个问题 Integer cameraType=1 if (cameraType.intValue() == SourceTypeEnum.ANFANG.getType(){ } 枚举值是 ...

  7. 第六章节 BJROBOT 动态导航壁障

    导航前说明:一定要确保你小车在构建好地图的基础上进行! 1.把小车平放在你想要构建地图区域的地板上,打开资料里的虚拟机,打开一个终端, ssh 过去主控端启动 roslaunch znjrobot b ...

  8. Spring(2) --Bean相关

    你对Spring中的bean了解吗?都有哪些作用域(Scope)? Spring 官方文档对 bean 的解释是: In Spring, the objects that form the backb ...

  9. 当音乐学博士搞起编程,用一本书改变了Java世界!

    前言 说到Spring,也许现在的开发者们最先想到的是 Josh Long 超快的语速与现场代码能力,让很多Java开发者折服. 然后Spring的历史上,最传奇的还是要数其创始人:Rod Johns ...

  10. P3714 [BJOI2017]树的难题 点分治+线段树合并

    题目描述 题目传送门 分析 路径问题考虑点分治 对于一个分治中心,我们可以很容易地得到从它开始的一条路径的价值和长度 问题就是如何将不同的路径合并 很显然,对于同一个子树中的所有路径,它们起始的颜色是 ...