题目大意:

有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. 将两个ListMap中同下标的map去重合并

    public static void main(String[] args) { Map<String,Object> oneMap = new HashMap<>(); on ...

  2. python-OpenCV 使用GrabCut来实现图片的前景与后景的分割

    先上一个效果图: 使用Python3.7+OpenCV 3.x. 需要引入 numpy库. 在图上用鼠标左键和右键标记前景和后景即可.如果需要重新标记图像,关闭程序重新运行. 以下是具体实现代码. # ...

  3. Linux嵌入式学习-远程过程调用-Binder系统

    Binder系统的C程序使用示例IPC : Inter-Process Communication, 进程间通信RPC : Remote Procedure Call, 远程过程调用 这里我们直接只用 ...

  4. 栈面板类StackPane?

    创建栈面板,将在其上放置两个按钮,并用样式属性设置按钮和栈面板的外观样式. package yuan; //栈面板的应用 import javafx.application.Application; ...

  5. win8.1下jdk的安装和环境变量的配置 eclipse的安装和汉化

    1.首先下载jdk安装包,安装的时候会有两个文件安装,一个是jdk一个是jre建议两个文件不要安装在一个目录下 2.安装jdk后面就是配置环境变量,path和classpath,path要在用户变量中 ...

  6. 10分钟搞定让你困惑的 Jenkins 环境变量

    前言 Jenkins, DevOps 技术栈的核心之一,CI/CD 离不开编写 Pipeline 脚本,上手 Jenkins ,简单查一下文档,你就应该不会被 agent,stages,step 这类 ...

  7. 解决 unknown filesystem type ntfs U盘/移动硬盘挂载出错问题

    大内存U盘或者移动硬盘挂在再Linux 时,报错unknown filesystem type ntfs 1.安装ntfs-3g wget http://tuxera.com/opensource/n ...

  8. 地图开发笔记(一):百度地图介绍、使用和Qt内嵌地图Demo

    前言   Qt在地图方面的研发.   百度地图 介绍   百度的地图分为多个开发,都是在线的(离线的需要自己提取,本篇解说在线地图).  百度地图JavaScript API支持HTTP和HTTPS, ...

  9. 树莓派-4WD智能小车操作小结

    树莓派-4WD智能小车操作小结 树莓派4B-4WD智能小车,双层结构,第一层结构为:小车扩展板(底层)+树莓派主板,通过铜柱隔离固定,小车扩展板相当于计算机的外设扩展板:上面一层为第二层,是三个舵机承 ...

  10. MySQL select 子查询的使用

    ### 子查询 >where 这个值是计算出来的 >本质:`在 where 语句中嵌套一个子查询语句` ```sql /*============== 子查询 ============== ...