LOJ10097和平委员会
POI 2001
根据宪法,Byteland民主共和国的公众和平委员会应该在国会中通过立法程序来创立。 不幸的是,由于某些党派代表之间的不和睦而使得这件事存在障碍。
此委员会必须满足下列条件:
每个党派都在委员会中恰有1个代表,
如果2个代表彼此厌恶,则他们不能都属于委员会。
每个党在议会中有 2 个代表。代表从1编号到2n。编号为2i-1和2i的代表属于第i个党派。
任务:写一程序读入党派的数量和关系不友好的代表对,计算决定建立和平委员会是否可能,若行,则列出委员会的成员表。
输入格式
第一行有两个非负整数n和m。他们各自表示:党派的数量n和不友好的代表对 m。 接下来 m 行,每行为一对整数 a,b表示代表a,b互相厌恶。
输出格式
如果不能创立委员会,则输出信息NIE。若能够成立,则输出包括 n 个从区间 1 到 2n选出的整数,按升序写出,每行一个,这些数字为委员会中代表的编号。
如果委员会能以多种方法形成,程序可以只输出它们的某一个。
样例
样例输入
3 2
1 3
2 4
样例输出
1
4
5
数据范围与提示
1<=n<=8000,0<=m<=20000,1<=a<b<=2n
————————————————————————————————
2-SAT问题。用对称性解!
————————————————————————————————
1 #include<bits/stdc++.h>
2 using namespace std;
3 const int maxn=8010;
4 const int maxm=2e4+10;
5 struct edge
6 {
7 int u,v,nxt;
8 }e[maxm<<1];
9 int head[maxn<<1],js;
10 void addage(int u,int v)
11 {
12 e[++js].u=u;e[js].v=v;
13 e[js].nxt=head[u];head[u]=js;
14 }
15 int n,m;
16 int dfn[maxn<<1],low[maxn<<1],cnt,lt[maxn<<1],lts,st[maxn<<1],top;
17 void tarjan(int u)
18 {
19 dfn[u]=low[u]=++cnt;
20 st[++top]=u;
21 for(int i=head[u];i;i=e[i].nxt)
22 {
23 int v=e[i].v;
24 if(!dfn[v])
25 {
26 tarjan(v);
27 low[u]=min(low[u],low[v]);
28 }
29 else if(!lt[v]) low[u]=min(low[u],dfn[v]);
30 }
31 if(low[u]==dfn[u])
32 {
33 lt[u]=++lts;
34 while(st[top]!=u)lt[st[top--]]=lts;
35 --top;
36 }
37 }
38 int main()
39 {
40 scanf("%d%d",&n,&m);
41 for(int a,b,i=0;i<m;++i)
42 {
43 scanf("%d%d",&a,&b);
44 addage(a,b&1?b+1:b-1);
45 addage(b,a&1?a+1:a-1);
46 }
47 for(int i=1;i<=(n<<1);++i)
48 if(!dfn[i])tarjan(i);
49 for(int i=1;i<=n;++i)
50 {
51 if(lt[i<<1]==lt[(i<<1)-1])
52 {
53 printf("NIE");
54 return 0;
55 }
56 }
57 for(int i=1;i<=n;++i)
58 {
59 if(lt[i<<1]<lt[(i<<1)-1])
60 printf("%d\n",i<<1);
61 else printf("%d\n",(i<<1)-1);
62 }
63 return 0;
64 }
LOJ10097和平委员会的更多相关文章
- 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 ...
- 【POI2001】【HDU1814】和平委员会
题面 Description 根据宪法,Byteland民主共和国的公众和平委员会应该在国会中通过立法程序来创立. 不幸的是,由于某些党派代表之间的不和睦而使得这件事存在障碍. 此委员会必须满足下列条 ...
- [模板]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 ...
- HDU1814和平委员会
题目大意: 有n对的人,编号从1-2*n,m对的人之间互相不喜欢,每对人中必徐选1个人加入和平委员会,求字典序最小的解 -------------------------------- 2-SAT问题 ...
- 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\)对仇恨关系表示两个人不能同时出席. 求是否有 ...
- HD1814Peaceful Commission(模板题)
题目链接 题意: 和平委员会 根据宪法,Byteland民主共和国的公众和平委员会应该在国会中通过立法程序来创立. 不幸的是,由于某些党派代表之间的不和睦而使得这件事存在障碍. 此委员会必须满足下列条 ...
随机推荐
- java 反射给字段重新赋值
1.获取实体的所有字段,遍历 2.获取字段类型 3.调用字段的get方法,判断字段值是否为空 4.如果字段值为空,调用字段的set方法,为字段赋值 Field[] field = model.getC ...
- pyspark使用-dataframe操作
一.读取csv文件 1.用pandas读取 import pandas as pd from pyspark.sql import SparkSession spark=SparkSession.bu ...
- java: Compilation failed: internal java compiler error
IDEA 编译项目出现java: Compilation failed: internal java compiler error 原因: 项目Java版本不一致 解决办法: 点击FIle> ...
- 有关CSS 定位中的盒装模型、position、z-index的学习心得
开始整体之前我需要说明两个概念: 第一个就是 一切皆为框 也就是说在HTML中的不管是是块级的还是内联的,都可以认为成块的,唯一的区别就是块的会独自占据一行 第二个文档流: 一个网页可以看作是 ...
- JVM笔记——类加载
1.在java代码中,类型(如class enum interface)的加载.连接.初始化过程都是在程序运行期完成的.这个特性,使得本为静态语言的java,拥有了动态语言的某些特征 加载:查找并加载 ...
- k8s之DNS服务器搭建
一.导读 在使用k8s部署springboot+redis简单应用这篇文章中,spring boot连接redis是直接使用的IP连接,那么可不可以直接使用服务名称进行连接呢?答案是可以的,这就是k8 ...
- 【剑指 Offer】07.重建二叉树
题目描述 输入某二叉树的前序遍历和中序遍历的结果,请重建该二叉树.假设输入的前序遍历和中序遍历的结果中都不含重复的数字. 示例: 前序遍历 preorder = [3,9,20,15,7] 中序遍历 ...
- 【Flutter】可滚动组件之滚动控制和监听
前言 可以用ScrollController来控制可滚动组件的滚动位置. 接口描述 ScrollController({ // 初始滚动位置 double initialScrollOffset = ...
- mongodb表索引备份,索引的导出导入
背景 发现有两个mongodb环境的数据库表索引不一致,另一个数据库有索引缺失,需要将一个数据库里的所有表索引导入到另一个数据库 也可用于单独备份数据库所有表的索引 写mongo shell的js脚本 ...
- LRU(Least Recently Used)最近未使用置换算法--c实现
在OS中,一些程序的大小超过内存的大小(比如好几十G的游戏要在16G的内存上跑),便产生了虚拟内存的概念 我们通过给每个进程适当的物理块(内存),只让经常被调用的页面常驻在物理块上,不常用的页面就放在 ...