HDU1814和平委员会
题目大意:
有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和平委员会的更多相关文章
- 【POI2001】【HDU1814】和平委员会
题面 Description 根据宪法,Byteland民主共和国的公众和平委员会应该在国会中通过立法程序来创立. 不幸的是,由于某些党派代表之间的不和睦而使得这件事存在障碍. 此委员会必须满足下列条 ...
- 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 ...
- [模板]2-SAT 问题&和平委员会
tarjan的运用 this is a problem:link 2-SAT处理的是什么 首先,把「2」和「SAT」拆开.SAT 是 Satisfiability 的缩写,意为可满足性.即一串布尔变量 ...
- [POI2001]和平委员会
题目描述 根据宪法,Byteland民主共和国的公众和平委员会应该在国会中通过立法程序来创立. 不幸的是,由于某些党派代表之间的不和睦而使得这件事存在障碍. 此委员会必须满足下列条件: 每个党派都在委 ...
- COGS:313. [POI2001] 和平委员会
313. [POI2001] 和平委员会 ★★☆ 输入文件:spo.in 输出文件:spo.out 评测插件时间限制:1 s 内存限制:128 MB 题目描述 根据宪法,Bytelan ...
- LOJ10097和平委员会
POI 2001 根据宪法,Byteland民主共和国的公众和平委员会应该在国会中通过立法程序来创立. 不幸的是,由于某些党派代表之间的不和睦而使得这件事存在障碍. 此委员会必须满足下列条件: 每个党 ...
- cogs 313. [POI2001] 和平委员会(2-SAT
http://cogs.pro:8080/cogs/problem/problem.php?pid=pyzQimjkj 题意:有n个集合,每个集合有俩元素,要从n个中各选一个放一堆,但是有的俩不能同时 ...
- P5782-[POI2001]和平委员会【2-SAT】
正题 题目链接:https://www.luogu.com.cn/problem/P5782 题目大意 \(n\)对人,每对之间恰好有一个人出席.\(m\)对仇恨关系表示两个人不能同时出席. 求是否有 ...
- 算法学习笔记:2-SAT
SAT 是适定性(Satisfiability)问题的简称.一般形式为 k - 适定性问题,简称 k-SAT.而当 \(k>2\) 时该问题为 NP 完全的.所以我们只研究 \(k=2\) 的情 ...
随机推荐
- Java动态代理分析
Java动态代理机制的出现,使得Java开发人员不用手工编写代理类,只要简单地制定一组接口及委托类对象,便能动态地获得代理类.代理类会负责将所有的方法调用分配到委托对象上反射执行,配置执行过程中,开发 ...
- 如何在K8S中优雅的使用私有镜像库 (Docker版)
前言 在企业落地 K8S 的过程中,私有镜像库 (专用镜像库) 必不可少,特别是在 Docker Hub 开始对免费用户限流之后, 越发的体现了搭建私有镜像库的重要性. 私有镜像库不但可以加速镜像的拉 ...
- kill的使用
Linux中Kill进程的N种方法 (2011-12-23 17:27:59) 转载▼ 标签: 杂谈 分类: ubuntu系统操作 常规篇: 首先,用ps查看进程,方法如下: $ ps -ef -- ...
- vue vue-cli postcss-sprites 配置
vue-cli2.x创建完项目 安装postcss-sprites yarn add postcss-sprites -D 根目录配置postcss.config.js配置中,需要注意,1:当有用px ...
- 镜像批量迁移利器:image-transfer
概述 用户业务在上云或者云迁移过程中,需要对镜像进行批量迁移.基于此背景,腾讯云容器专家团队开发了镜像批量迁移工具:image-transfer.该工具支持多种云厂商镜像仓库之间的批量迁移,同时支持腾 ...
- 我的程序员之路:自学Java篇
序章 时光疾驰,从事IT行业已两年有余. 16年11月开始自学Java,从此开启自学之路,后来实习期自学大数据.python.爬虫等,最终成长为一名平凡的程序员.回首望去,一路上的过往历历在目,有初学 ...
- SpringBoot整合Shiro完成认证
三.SpringBoot整合Shiro思路 首先从客户端发来的所有请求都经过Shiro过滤器,如果用户没有认证的都打回去进行认证,认证成功的,再判断是否具有访问某类资源(公有资源,私有资源)的权限,如 ...
- 一文带你学会AQS和并发工具类的关系
1. 存在的意义 AQS(AbstractQueuedSynchronizer)是JAVA中众多锁以及并发工具的基础,其底层采用乐观锁,大量使用了CAS操作, 并且在冲突时,采用自旋方式重试,以实 ...
- 区间合并 C++
#include <iostream> #include <vector> #include <algorithm> using namespace std; ty ...
- maven仓库和镜像
目录 简介 本地仓库 远程仓库 远程仓库的更新 远程仓库的认证 部署到远程仓库 快照版本 依赖解析 镜像 本文主要是针对<maven实战>书中关键知识点的学习记录,未免有纰漏或描述不到之处 ...