hiho一下第134周 1468 : 2-SAT·hihoCoder新春晚会
2024-09-02 05:16:02
1468 : 2-SAT·hihoCoder新春晚会
时间限制:10000ms
单点时限:1000ms
内存限制:256MB
描述
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#include <iostream>
#include <cstring>
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <cmath>
#include <time.h>
#include <string>
#include <map>
#include <stack>
#include <vector>
#include <set>
#include <queue>
#define met(a,b) memset(a,b,sizeof a)
#define pb push_back
#define lson(x) ((x<<1))
#define rson(x) ((x<<1)+1)
using namespace std;
typedef long long ll;
const int N=2e4+;
const int M=4e5+;
struct Edge {
int to,next;
} edge[M];
int head[M],tot;
void init() {
tot = ;
memset(head,-,sizeof(head));
}
void addedge(int u,int v) {
edge[tot].to = v;
edge[tot].next = head[u];
head[u] = tot++;
}
bool vis[N];//染色标记,为true表示选择
int S[N],top;//栈
bool dfs(int u) {
if(vis[u^])return false;
if(vis[u])return true;
vis[u] = true;
S[top++] = u;
for(int i = head[u]; i != -; i = edge[i].next)
if(!dfs(edge[i].to))
return false;
return true;
}
bool Twosat(int n) {
memset(vis,false,sizeof(vis));
for(int i = ; i < n; i += ) {
if(vis[i] || vis[i^])continue;
top = ;
if(!dfs(i)) {
while(top)vis[S[--top]] = false;
if(!dfs(i^)) return false;
}
}
return true;
}
int main() {
int n,m;
int u,v;
scanf("%d%d",&n,&m);
init();
while(m--) {
scanf("%d%d",&u,&v);
u--;
v--;
addedge(u,v^);
addedge(v,u^);
}
if(Twosat(*n)) {
for(int i = ; i < *n; i++)
if(vis[i])
printf("%d\n",i+);
} else printf("NIE\n");
return ;
}
最新文章
- Java各种数据结构实现
- Python爬虫学习(1): urllib的使用
- 编写高质量ios-之一 OC 语言的起源
- event.stopPropagation()与event.preventDefault()
- MSDeploy
- 验证xml是否有效于.dtd文件
- scala言语基础学习三(面向对象编程)
- [译]MongoDB 3.0发布说明
- Java类的初始化过程及清理
- 【HDOJ】2757 Ocean Currents
- iOS友盟三方登陆
- Java框架spring 学习笔记(十一):aop相关概念
- 论文阅读笔记二十二:End-to-End Instance Segmentation with Recurrent Attention(CVPR2017)
- pandas数组获取最大值索引的方法-argmax和idxmax
- Myeclipse10使用git
- redis -clock_gettime问题
- 基于 Laravel 开发博客应用系列 —— 从测试开始(二):使用Gulp实现自动化测试
- RPM命令详解(安装、升级、卸载)
- 174.Dungeon Game---dp
- git学习——<;四>;git版本管理
热门文章
- BZOJ4008 [HNOI2015]亚瑟王 【概率dp】
- 什么是node.js的事件驱动编程
- 解决在ios下不能自动播放音频的问题
- 转载:Java中的String与常量池
- centos yum 安装 mysql
- vivo面试经验4(linux基本操作,最基本,必须得会!!)
- bzoj4756 [Usaco2017 Jan]Promotion Counting
- shell脚本之正则表达和文本处理(文本处理三剑客:1、grep 2、sed 3、awk)
- IEEE 802.15介绍
- [转]Native进程的运行过程