描述

hihoCoder新春晚会正在紧张地筹备中。晚会分为上半场和下半场,总导演小Hi现在要为N个节目安排演出时间(上半场或下半场)。为了描述方便,我们将第i个节目对应两个编号2i-1和2i,分别表示把第i个节目安排在上半场和下半场。

由于演员、道具和布景的限制。有些安排之间存在冲突,比如编号1的安排和编号4的安排有冲突,意味着"把第1个节目安排在上半场"同"把第2个节目安排在下半场"有冲突。

现在小Hi手里有M对编号,表示冲突的节目安排。他的任务是帮助主办方安排出节目演出的合理时间。

输入

第一行包含两个非负整数n和m(n≤8000,m≤20000),代表有n个节目和m对冲突。

接下来m行每行两个数x和y,表示编号x和编号y冲突。

输出

输出n行,每行一个数,从小到大输出最后进行演出的编号。若有多解,则输出字典序最小的。无解则输出NIE。

样例输入

3 2
1 3
2 4

样例输出

1
4
5

思路

SAT建边,然后暴力DFS(NMNMNM)
每个点拆成了两个点i1和i2i_1 和i_2i1​和i2​
先从最小的点i1i_1i1​开始枚举将路径上的点标记,如果存在矛盾那么这个点不符合,然后枚举i2i_2i2​,如果这个点还存在矛盾,那么无解

建图的时候要对应好关系,对于这个题i1和i2i_1 和i_2i1​和i2​是互斥的,所以要 (i1→¬i2ori2→¬i1i_1 \to\lnot i_2or i_2\to\lnot i_1i1​→¬i2​ori2​→¬i1​) 而不是(¬i1→i2or¬i2→i1\lnot i_1 \to i_2or \lnot i_2\to i_1¬i1​→i2​or¬i2​→i1​)

#include <bits/stdc++.h>
#define LL long long
#define P pair<int, int>
#include <time.h>
#define lowbit(x) (x & -x)
#define mem(a, b) memset(a, b, sizeof(a))
#define rep(i, a, n) for (int i = a; i <= n; ++i)
const int maxn = 1044373;
#define mid ((l + r) >> 1)
#define lc rt<<1
#define rc rt<<1|1
using namespace std;int read() {int num = 0, flag = 1;char c = getchar();while (c < '0' || c > '9')  flag = (c == '-') ? -1 : 1, c = getchar();while (c >= '0' && c <= '9') num = (num << 3) + (num << 1) + c - '0', c = getchar();return num * flag;
}
void out(int x) {if (x > 9)  out(x / 10);putchar(x % 10 + '0');
}vector<int> g[maxn];
int tmp[maxn], vis[maxn], len;int other(int x) {if (x & 1) return x+1;else return x-1;
}int dfs(int x) {if (vis[other(x)]) return 0;if (vis[x]) return 1;tmp[len++] = x;vis[x] = 1;for (int i = 0, y; i < (int)g[x].size(); ++i) {y = g[x][i];if (dfs(y) == 0) return 0;}return 1;
}int main() {ios::sync_with_stdio(false);cin.tie(0); cout.tie(0);int n, m;scanf("%d %d", &n, &m);for (int i = 0, l, r; i < m; ++i) {scanf("%d %d", &l, &r);g[l].push_back(other(r));g[r].push_back(other(l));}for (int i = 1; i <= n; ++i) {if (vis[i*2] || vis[i*2-1]) continue;len = 0;if (dfs(i*2-1) == 0) {for (int j = 0; j < len; ++j) {vis[tmp[j]] = 0;}len = 0;if (dfs(i*2) == 0) {puts("NIE");return 0;}}}for (int i = 1; i <= n*2; ++i) if (vis[i])   printf("%d\n", i);return 0;
}

hihoCoder #1468 : 2-SAT·hihoCoder新春晚会(2-SAT 输出字典序最小的方案)相关推荐

  1. 【方案分享】地产项目2022年新春1月系列暖场活动策划方案:新年置业,如虎添翼.pptx(附下载链接)...

    省时查报告-专业.及时.全面的行研报告库 省时查方案-专业.及时.全面的营销策划方案库 大家好,我是文文(微信号:sscbg2020),今天给大家分享一份虎年干货方案<地产项目2022年新春1月 ...

  2. 天猫双11晚会和狂欢城的互动技术方案

    编者按: \\ 4月21日,天猫互动的技术专家邓红春(续彬)在QCon北京2016分享了<天猫双11晚会和狂欢城的互动技术方案>.2015年天猫联合湖南卫视联合打造了一场最互联网的双11晚 ...

  3. NOIp系列题目及CF小结

    长期更新中2333 2018/7/2 先看一下昨晚的cf Codeforces Round #493 (Div. 2) A. Balloons 这个题...直接模拟233 B. Cutting 来一下 ...

  4. 我的所有优质博客全部开源啦(我自己原创的《ACM模板》《算法全家桶》《算法竞赛中的初等数论》 PDF免费下载)

    你好呀ヾ(≧▽≦*)o 我是繁凡さん 这两年来我写了很多长篇文章,主要涉及数据结构,算法,程序设计竞赛,数学,计算几何等方面的内容: <数据结构>C语言版(清华严蔚敏考研版) 全书知识梳理 ...

  5. PAT (Advanced Level) Practice 题解代码 - II (1051-1100)

    PAT PAT (Advanced Level) Practice - II(1051-1100) -------------------------------------------------- ...

  6. pat甲级 第一章 字符串1-10 自用

    1字符串6 1534. 字符串减法 //1534. 字符串减法 // //给定两个字符串 S1 和 S2,S = S1−S2 定义为将 S1 中包含的所有在 S2 中出现过的字符删除后得到的字符串. ...

  7. ACM模板(满注释模板!)

    转自:https://fanfansann.blog.csdn.net/article/details/105493218 目录 F o r e w o r d ForewordForeword T ...

  8. 【PAT甲级真题整理三】1061~1090

    目录 1061 Dating(20)字符串处理 1062 Talent and Virtue(25)排序 1063 Set Similarity(25)set的使用 1064 Complete Bin ...

  9. hihocoder #1163 : 博弈游戏·Nim游戏

    题意:有k堆石子,每次选择一堆,在这堆中取至少一个石子,第一个无石子可取的人为输. 思路:经典游戏,直接有结论:如果这些堆的石子数为:a1,a2,a3-an.那么a1到an的异或为0,则先手有必败策略 ...

最新文章

  1. 雅马哈机器人左手右手系统_消防管件组装成机器人 PM值临界时会报警并自动喷淋...
  2. 微信实时Look-alike算法分享赏析
  3. Android支付宝SDK开发笔记
  4. java模式之装饰模式
  5. 2020必火的图神经网络(GNN)是什么?有什么用?
  6. Java系统架构的演化之路
  7. eclipse 中的注释 快捷键
  8. 不要以为写写代码就是计算机科学
  9. android 模拟menu键点击事件,android处理Back键Home键和Menu键事件(转)
  10. 移动端应用视频小程序加密播放(存档)
  11. 一个不重复的随机数发生函数
  12. 小程序上线后部分图片不显示的问题
  13. HC-SR501 人体红外感应模块 单片机
  14. SpringBoot项目在使用Maven打包war中遇到的问题
  15. poi导出excel无法打开文件
  16. 【完美解决】修复concrt140.dll未找到错误的问题
  17. 2021-2022-2-第5次单元练习后记
  18. Kylin的介绍及使用说明
  19. 网站移动端APP渗透测试安全检测方案
  20. 2021年中国光伏行业现状分析,光伏发电集中式与分布式并举的发展趋势明显「图」

热门文章

  1. [CQOI2018] 解锁屏幕
  2. python初步学习-查看文档及数据类型转换
  3. HDU 5919 Sequence II 主席树
  4. Lichee (六) 优化配置的微内核
  5. [BZOJ1007](HNOI2008)水平可见直线(半平面交习题)
  6. sftp 服务器外网访问设置
  7. SQL Server2012登录记录怎么删除?
  8. 【数据结构与算法】之深入解析“将有序数组转换为二叉搜索树”的求解思路与算法示例
  9. iOS之深入解析bitcode的功能与应用
  10. 2021年第十二届蓝桥杯 - 省赛 - C/C++大学C组 - D.相乘