2-SAT,输出字典序最小的解,白书模板。

//TwoSAT输出字典序最小的解的模板
//注意:0,1是一组,1,2是一组.....

#include<cstdio>
#include<cstring>
#include<cmath>
#include<vector>
#include<algorithm>
using namespace std;const int maxn=8000+5;
int m;struct TwoSAT
{int n;vector<int> G[maxn*2];bool mark[maxn*2];int S[maxn*2],c;bool dfs(int x){if(mark[x^1]) return false;if(mark[x]) return true;mark[x]=true;S[c++]=x;for(int i=0;i<G[x].size();i++)if(!dfs(G[x][i])) return false;return true;}void init(int n){this->n=n;for(int i=0;i<n*2;i++) G[i].clear();memset(mark,0,sizeof mark);}void add_clause(int x,int y){G[x].push_back(y^1);G[y].push_back(x^1);}bool solve(){for(int i=0;i<2*n;i+=2)if(!mark[i]&&!mark[i+1]){c=0;if(!dfs(i)){while(c>0) mark[S[--c]]=false;if(!dfs(i+1)) return false;}}return true;}//输出字典序最小的解void Printf(){for(int i=0;i<n;i++){if(mark[2*i]) printf("%d\n",2*i+1);else printf("%d\n",2*i+1+1);}}
};int main()
{TwoSAT T;while(~scanf("%d%d",&T.n,&m)){T.init(T.n);for(int i=0;i<m;i++){int a,b;scanf("%d%d",&a,&b);a--;b--;T.add_clause(a,b);}if(T.solve()) T.Printf();else printf("NIE\n");}return 0;
}

转载于:https://www.cnblogs.com/zufezzt/p/4906130.html

HDU 1814 Peaceful Commission相关推荐

  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\text{2-sat}2-sat带字典序最小解的经典问题,时间复杂度O(n2)O(n^2)O(n2),还是结合代码讲更好: #include <c ...

  4. hdu 1814 Peaceful Commission 题解

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

  5. HDOJ 1814 Peaceful Commission

    经典2sat裸题,dfs的2sat能够方便输出字典序最小的解... Peaceful Commission Time Limit: 10000/5000 MS (Java/Others)    Mem ...

  6. hdu1814 Peaceful Commission 2-sat

    hdu1814 Peaceful Commission 链接 emm,三个链接,三个都不同 loj随便做 hdu字典序最小 bzoj求合法方案数 思路 loj是任意一组解,直接跑tarjan然后判. ...

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

  8. HDU1814 Peaceful Commission 2SAT

    http://acm.hdu.edu.cn/showproblem.php?pid=1814 输出最小字典序. 1 #include<bits/stdc++.h> 2 const int ...

  9. hdu1814 Peaceful Commission 2-SAT建图入门

    题面 The Public Peace Commission should be legislated in Parliament of The Democratic Republic of Byte ...

最新文章

  1. MySQL和PostgreSQL数据库安全配置
  2. AWS ML deploy platform
  3. python编程if语法-二、python 语法之变量赋值与if(if else)
  4. POJ-1724 深搜剪枝
  5. Larbin 安装遇到的问题(fedora)
  6. 二分搜索及其扩展(循环递增数组的搜索)
  7. Timer和TimerTask详解
  8. Bootstrap 响应式设计
  9. Linux 命令(138)—— nc 命令
  10. 643. 子数组最大平均数 I
  11. 2018双一流排名 计算机,2018年42所双一流大学本硕博录取人数排名,规模优势凸显!...
  12. 织梦搜索结果增加dede:type、dede:arclist、dede:channelartlist、dede:tag等标签支持
  13. 勒索病毒“WannaCry”之复现过程(永恒之蓝)
  14. windows下的diskpart指令修复U盘分区
  15. 扫雷网站推荐及游戏攻略
  16. 怎么重置imac_如何重置Mac Pro?四种重置Macbook Pro的方法
  17. JS 单引号、双引号与反引号的区别
  18. BEA-090403 Authentication for user admin denied
  19. Python数据可视化图表大全
  20. Bootstrap Table 中文文档(完整翻译版)

热门文章

  1. Image Pro Plus测量组织平均厚度
  2. C++构造与析构(18) - 静态对象(static object)何时销毁
  3. Windows下C/C++获取当前系统时间
  4. firefox 39 linux,Mozilla Firefox 39.0 Beta 4 发布下载
  5. 数据结构与算法(C++)– 堆排(Heap Sort)
  6. erlang精要(16)-匿名函数之sigmoid函数实现
  7. 自然语言处理「迷惑行为大赏」
  8. 很好很强大,这款AI开发神器的图像标注吊打labelme
  9. 考研初试成绩陆续公布,说说你的考研故事
  10. 【效率】NB,真PDF神处理工具!