HDU 1814 Two_Sat
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1814
题意: 有(1,2),(3,4), ...(2n-1,2n),n对数,要在每对中选出一个共n个,并且满足m个约束条件,条件(a,b)表示ab不能同时被选,按字典序输出答案,无解输出NIE
分析: Two_Sat问题,假设A,A‘为一对,B,B'为一对,那么对于约束条件(A,B),在选A的时候必须选B’,选B的时候必选选A‘,加边A->B',B->A'
模板用的是大白书上的,跑出来直接是字典序,mark为true即为取当前值。
#include <iostream>
#include<cstdio>
#include<algorithm>
#include<string>
#include<cstring>
#include<vector>
#define maxn 8005
using namespace std;
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<n*2;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 print(){if(!solve())printf("NIE\n");else {for(int i=0;i<n;i++){if(mark[i*2])printf("%d\n",i*2+1);elseprintf("%d\n",i*2+2);}}}
};
int main()
{int n,m,x,y;while(~scanf("%d%d",&n,&m)){TwoSAT T;T.init(n);while(m--){scanf("%d%d",&x,&y);T.add_clause(x-1,y-1);}T.print();}return 0;
}
HDU 1814 Two_Sat相关推荐
- 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 题解
题目传送门 题目大意: 有 nnn 个团队,每个团队两个人,现在要组成一个 nnn 人的组织,要求每个团队中只能有 111 个人在组织里,给出 mmm 组憎恶关系,相互憎恶的两人不能同时在组织里,给出 ...
- hdu 1814 字典序最小的2sat(暴力深搜)
题意: 题意就是最基础的2sat,关系只有矛盾关系,然后二选一,关键是这个题目是输出字典序最小的那组解. 思路: 输出字典序最小,用强连通那个实现不了(起码没看到有人实现),其实我 ...
- HDU 1814 Peaceful Commission
2-SAT,输出字典序最小的解,白书模板. //TwoSAT输出字典序最小的解的模板 //注意:0,1是一组,1,2是一组..... #include<cstdio> #include&l ...
- [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 ...
- [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学习 ...
最新文章
- 使用java代码代替xml实现SSM
- oracle standby同步,ORACLE 利用rman增量备份同步standby库
- Golang中GOPATH在Goland的理解
- memwatch内存泄露检测工具
- 创建路径_PS钢笔工具是建立路径的基本工具
- 全排列 DFS 回溯
- java 获取数据源_J2EE java 获取数据源
- 通过复制oracle软件方式安装oracle数据库
- 9.6-9.7 awk
- 商业 - 业务领先模型介绍(BLM)
- 【LOJ101】最大流(Edmonds-Karp)
- iPhoneアプリに本格ホラーアドベンチャー監獄脱出少女 android
- 基于Selenium的Web UI自动化实现(java)
- python与数据挖掘课后实验答案_数据仓库与数据挖掘课后习题答案
- 开发者投稿—百度大脑新品体验之肤色检测
- 表单验证设计的用户体验基本原则
- 视频压缩原理之 预测编码
- MySQL技术总结第一篇
- WPf控件模板缺省样式
- Visual Studio 2017,C++MFC免注册调用大漠插件图文教程,详细版