HDU-1814-TwoSAT
题目大意:有(1,2),(3,4), ...(2n-1,2n),n对数,要在每对中选出一个共n个,并且满足m个约束条件,条件(a,b)表示ab不能同时被选,按字典序输出答案;
题目解析:如果有a b有约束,那么建边A->B^1,B->A^1,字典序最后直接遍历输出;
AC代码:
#include<iostream>
#include<cstdio>
#include<cstring>
#include<string>
#include<algorithm>
#include<vector>
#include<stack>
using namespace std;
const int maxn=8010*2;
const int maxm = 20010;
int first[maxn];
int vv[maxm*4],nxt[maxm*4],S[maxm*4];
int e,c,n,m;
bool vis[maxn];
void addedge(int u,int v)
{ vv[e] = v; nxt[e] = first[u]; first[u] = e++;
} bool dfs(int u)
{ if(vis[u^1]) return 0; if(vis[u]) return 1; vis[u] = 1; S[c++] = u; for(int i = first[u];i != -1;i = nxt[i]) { int v = vv[i]; if(!dfs(v)) return false; } return true;
} bool Judge()
{ for(int i = 0;i < n*2;i+=2) { if(!vis[i] && !vis[i+1]) { c = 0; if(!dfs(i)) { while(c > 0) vis[S[--c]] = 0; if(!dfs(i+1)) return false; } } } return true;
}
int main()
{while(scanf("%d%d",&n,&m)!=EOF&&(n+m)){memset(first,-1,sizeof(first));e=0;memset(vis,0,sizeof(vis));for(int i=0;i<m;i++){int u,v;scanf("%d%d",&u,&v);u--;v--; addedge(u,v^1);addedge(v,u^1);} if(Judge()){for(int i=0;i<n;i++){if(vis[2*i+1]==1)printf("%d\n",i*2+2);else printf("%d\n",i*2+1);}}else printf("NIE\n");}return 0;
}
HDU-1814-TwoSAT相关推荐
- 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 ...
- HDU 1814 Peaceful Commission(2-SAT)
题目链接:http://acm.split.hdu.edu.cn/showproblem.php?pid=1814 题意: 要建立一个和平委员会,要满足以下条件: 每个党派都在委员会中恰有1个代表, ...
- HDU 1814 Peaceful Commission
2-SAT,输出字典序最小的解,白书模板. //TwoSAT输出字典序最小的解的模板 //注意:0,1是一组,1,2是一组..... #include<cstdio> #include&l ...
- hdu 1814 字典序最小的2sat(暴力深搜)
题意: 题意就是最基础的2sat,关系只有矛盾关系,然后二选一,关键是这个题目是输出字典序最小的那组解. 思路: 输出字典序最小,用强连通那个实现不了(起码没看到有人实现),其实我 ...
- [2-sat专练]poj 3683,hdu 1814,hdu 1824,hdu 3622,hdu 4115,hdu 4421
文章目录 Priest John's Busiest Day code Peaceful Commission code Let's go home code Bomb Game code Elimi ...
- HDU 1814(染色)
题目大意 有n个党派,每个党派2个人,这2*n个人之间存在一些敌对关系,现在要从中选出n个人组成一个委员会,要求满足: 1.每个党派中选1个 2.委员会中不存在敌对关系 分析 题目中第i个党派的成员编 ...
- [HDU 1814] Peaceful Commission
一.题目 点此看题 二.解法 这就是2-sat\text{2-sat}2-sat带字典序最小解的经典问题,时间复杂度O(n2)O(n^2)O(n2),还是结合代码讲更好: #include <c ...
- hdu 1814 Peaceful Commission 题解
题目传送门 题目大意: 有 nnn 个团队,每个团队两个人,现在要组成一个 nnn 人的组织,要求每个团队中只能有 111 个人在组织里,给出 mmm 组憎恶关系,相互憎恶的两人不能同时在组织里,给出 ...
- [kuangbin]各种各样的题单
[kuangbin]各种各样的题单 专题1 简单搜索 POJ 1321 POJ 2251 POJ 3278 POJ 3279 POJ 1426 POJ 3126 POJ 3087 POJ 3414 F ...
- (转)2-sat 专题
[2-sat]专题- 2-sat是一个逻辑性很强的算法,但是其套路比较固定,所以不是很热,题目很少,但也不乏AC后让人大呼爽快的好题,下面放出两篇极品论文还有几道题目的题解以供交流-- 2-sat学习 ...
最新文章
- 支持向量机背后的数学原理!
- python 多个变量赋值
- Wire:Linux开源聊天应用
- 深入理解Java内存模型--转载
- 【OpenCV入门学习笔记2】:Mat对象
- 360安全卫士 导致MySQL 5.0.24 自动关闭
- 2019牛客暑期多校训练营(第四场)I - String (后缀自动机+回文树)
- c语言5版第10章答案,第10章 指 针 参考答案 c语言(1)
- 昨天飞鸽传书可能是因为太累了
- Vue3动态组件、缓存组件、分发组件
- hibernate不能保存时分秒处理
- QMQ源码分析之delay-server篇【一】
- iStat Menus 6.51 mac中文版
- Mac 入门教程:如何更改你的 Mac 设备名称
- [整理]让winCE支持中文界面(可切换至英文界面)
- caffe的python接口学习(1):生成配置文件
- Unity说明文档翻译-Time Manager
- Hive内表和外表浅析
- python学习 字典
- 基于PaddleOCR识别火车票信息