hdu1814 Peaceful Commission,2-sat
题目大意:一国有n个党派。每一个党派在议会中都有2个代表,现要组建和平委员会,要从每一个党派在议会的代表中选出1人,一共n人组成和平委员会。已知有一些代表之间存在仇恨,也就是说他们不能同一时候被选为和平委员会的成员,现要你推断满足要求的和平委员会是否能创立?假设能,请随意给出一种方案。
2-sat问题
#include <cstdio>
#include <cstring>
#include <vector>
#include <iostream>
#include <algorithm>
using namespace std; const int maxn = 10005;
int n, m;
vector<int> G[maxn*2];
bool mark[maxn*2];
int S[maxn*2], top; bool dfs(int x)
{
if(mark[x^1]) return false;
if(mark[x]) return true;
mark[x] = true;
S[top++] = x;
for(int i=0; i<G[x].size(); ++i)
if(!dfs(G[x][i])) return false;
return true;
} bool TwoSat()
{
memset(mark, 0, sizeof mark );
for(int i=0; i<n; i += 2) {
if(!mark[i] && !mark[i^1]) {
top = 0;
if(!dfs(i)) {
while(top) mark[S[--top]] = false;
if(!dfs(i^1)) return false;
}
}
}
return true;
} int main()
{
int u, v;
while(~scanf("%d%d", &n, &m)) {
n *= 2;
for(int i=0; i<n; ++i) G[i].clear();
while(m--) {
scanf("%d%d", &u, &v);
u--;
v--;
G[u].push_back(v^1);
G[v].push_back(u^1);
}
if(TwoSat()) {
for(int i=0; i<n; i+=2)
if(mark[i])
printf("%d\n", i+1);
else
printf("%d\n", (i^1)+1);
} else printf("NIE\n");
}
return 0;
}
hdu1814 Peaceful Commission,2-sat的更多相关文章
- hdu1814 Peaceful Commission
hdu1814 Peaceful Commission 题意:2-sat裸题,打印字典序最小的 我写了三个 染色做法,正解 scc做法,不管字典序 scc做法,错误的字典序贪心 #include &l ...
- HDU1814 Peaceful Commission 2-sat
原文链接http://www.cnblogs.com/zhouzhendong/p/8099115.html 题目传送门 - HDU1814 题面 Description 根据宪法,Byteland民 ...
- hdu1814 Peaceful Commission——2-SAT
题目:http://acm.hdu.edu.cn/showproblem.php?pid=1814 第一次的2-SAT,推荐博客:https://blog.csdn.net/jarjingx/arti ...
- HDU1814(Peaceful Commission) 【2-SAT DFS暴力求最小字典序的模板】
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1814 题意:给出一个数n,代表有n个党派,每个党派要求派出其中一个人去参加会议,且只能派出一人.给出m ...
- HDU-1814 Peaceful Commission 2sat
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1814 简单的2sat题. //STATUS:C++_AC_390MS_996KB #include & ...
- 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 ...
- Peaceful Commission
Peaceful Commission Time Limit: 10000/5000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others ...
- hdu 1814 Peaceful Commission (2-sat 输出字典序最小的路径)
Peaceful Commission Time Limit: 10000/5000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Oth ...
- 图论--2-SAT--HDU/HDOJ 1814 Peaceful Commission
Peaceful Commission Time Limit: 10000/5000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Oth ...
随机推荐
- ubuntu 硬件系统信息
查看ubuntu硬件信息 1, 主板信息 .查看主板的序列号 -------------------------------------------------- #使用命令 dmidecode | ...
- IOS开发之---触摸和手势
Touch:在与设备的多点触摸屏交互时生成. 响应者对象 响应者对象就是可以响应事件并对事件作出处理.在iOS中,存在UIResponder类,它定义了响应者对象的所有方法.UIApplication ...
- 有二级目录的IIS配置
当项目配置文件中配置了二级目录时,如下: <!--二级目录地址--> <add key="SecondCatalog" value="/hotel&qu ...
- android使用友盟第三方自动更新/手动更新
最近项目用到自动更新,发现一个方便快捷的第三方组件非常好用,只需要几行代码搞定,非常适合新手使用.分享给大家一起学习. 本文档帮助您以最快速最简洁的方式集成使用自动更新组件. 一.申请友盟开发者账号创 ...
- XHR 框架与 Dojo( xhrGet,xhrPut,xhrDelete)
总结 本文介绍了 Dojo 中三种浏览器与服务器交互的方式,这三种方式各有优缺点,但是在使用方式却出奇的一致: xhr 框架的函数,dojo.io.iframe.dojo.io.script 对象的函 ...
- 如何查看SQLServer数据库每个表占用的空间大小?
如何查看SQLServer数据库每个表占用的空间大小? 创建存储过程: CREATE PROCEDURE [dbo].[sys_viewTableSpace]AS BEGIN SET NOCOUNT ...
- Http 信息头
Http协议定义了很多与服务器交互的方法,最基本的有4种,分别是GET.POST.PUT.DELETE.一个URL地址用于描述一个网络上的资源,而HTTP中的GET.POST.PUT. DELETE就 ...
- HDU 1046 - Gridland
果然是数学题 #include <iostream> #include <cstdio> #include <cmath> using namespace std; ...
- volatile 和const 变量的使用
一.volatile定义: 一个定义为volatile的变量是说这变量可能会被意想不到的被改变,这样,有了volatile变量后,就提醒编译器就不会去假设这个变量的值了.精确地说就是,编译中的优化器在 ...
- FreeImage裁剪示例
//截图 int cropImage(const char* file, int left, int top, int right, int bottom, BYTE* &dstData, D ...