题目大意:有(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相关推荐

  1. 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. HDU 1814 Peaceful Commission(2-SAT)

    题目链接:http://acm.split.hdu.edu.cn/showproblem.php?pid=1814 题意: 要建立一个和平委员会,要满足以下条件: 每个党派都在委员会中恰有1个代表, ...

  3. HDU 1814 Peaceful Commission

    2-SAT,输出字典序最小的解,白书模板. //TwoSAT输出字典序最小的解的模板 //注意:0,1是一组,1,2是一组..... #include<cstdio> #include&l ...

  4. hdu 1814 字典序最小的2sat(暴力深搜)

    题意:      题意就是最基础的2sat,关系只有矛盾关系,然后二选一,关键是这个题目是输出字典序最小的那组解. 思路:      输出字典序最小,用强连通那个实现不了(起码没看到有人实现),其实我 ...

  5. [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 ...

  6. HDU 1814(染色)

    题目大意 有n个党派,每个党派2个人,这2*n个人之间存在一些敌对关系,现在要从中选出n个人组成一个委员会,要求满足: 1.每个党派中选1个 2.委员会中不存在敌对关系 分析 题目中第i个党派的成员编 ...

  7. [HDU 1814] Peaceful Commission

    一.题目 点此看题 二.解法 这就是2-sat\text{2-sat}2-sat带字典序最小解的经典问题,时间复杂度O(n2)O(n^2)O(n2),还是结合代码讲更好: #include <c ...

  8. hdu 1814 Peaceful Commission 题解

    题目传送门 题目大意: 有 nnn 个团队,每个团队两个人,现在要组成一个 nnn 人的组织,要求每个团队中只能有 111 个人在组织里,给出 mmm 组憎恶关系,相互憎恶的两人不能同时在组织里,给出 ...

  9. [kuangbin]各种各样的题单

    [kuangbin]各种各样的题单 专题1 简单搜索 POJ 1321 POJ 2251 POJ 3278 POJ 3279 POJ 1426 POJ 3126 POJ 3087 POJ 3414 F ...

  10. (转)2-sat 专题

    [2-sat]专题- 2-sat是一个逻辑性很强的算法,但是其套路比较固定,所以不是很热,题目很少,但也不乏AC后让人大呼爽快的好题,下面放出两篇极品论文还有几道题目的题解以供交流-- 2-sat学习 ...

最新文章

  1. 支持向量机背后的数学原理!
  2. python 多个变量赋值
  3. Wire:Linux开源聊天应用
  4. 深入理解Java内存模型--转载
  5. 【OpenCV入门学习笔记2】:Mat对象
  6. 360安全卫士 导致MySQL 5.0.24 自动关闭
  7. 2019牛客暑期多校训练营(第四场)I - String (后缀自动机+回文树)
  8. c语言5版第10章答案,第10章 指 针 参考答案 c语言(1)
  9. 昨天飞鸽传书可能是因为太累了
  10. Vue3动态组件、缓存组件、分发组件
  11. hibernate不能保存时分秒处理
  12. QMQ源码分析之delay-server篇【一】
  13. iStat Menus 6.51 mac中文版
  14. Mac 入门教程:如何更改你的 Mac 设备名称
  15. [整理]让winCE支持中文界面(可切换至英文界面)
  16. caffe的python接口学习(1):生成配置文件
  17. Unity说明文档翻译-Time Manager
  18. Hive内表和外表浅析
  19. python学习 字典
  20. 基于PaddleOCR识别火车票信息

热门文章

  1. Eclipse Debug: Drop to Frame
  2. 【数据结构、字符串、C语言】统计字符串中不同字符出现的频度
  3. Linux下4G LTE连接
  4. C标准库函数mkfifo()(进程相关函数)
  5. 搜索框实现模糊查询方法 - js
  6. Cesium最新基础教程系列2—Viewer离线加载地图数据(高程数据,地图瓦片(卫星影像、电子地图)),Viewer属性详解,及离线自定义图层
  7. Intellij IDEA中文版
  8. 自签名SSL证书的安全隐患和风险
  9. Python中的StringIO与cStringIO简析
  10. 三、kotlin的类和对象(二)