题目链接:戳我

菜得不行了,直到今天才刚开始学2-SAT。。。。

2-SAT的模板,因为是求最小字典序,所以只能用上限为\(O(nm)\)的最暴力的方法来做。。。

#include<iostream>
#include<cstring>
#include<cstdio>
#include<algorithm>
#include<cmath>
#define MAXN 200010
using namespace std;
int n,m,t,cnt;
int head[MAXN],cur[MAXN],color[MAXN];
struct Edge{int nxt,to,dis;}edge[MAXN<<1];
inline int to(int x)
{if(x&1) return x+1;else return x-1;
}
inline void add(int from,int to){edge[++t].nxt=head[from],edge[t].to=to,head[from]=t;}
inline bool check(int x)
{if(color[x]&&color[x]==2) return false;else if(color[x]&&color[x]==1) return true;color[x]=1;color[to(x)]=2;cur[++cnt]=x;for(int i=head[x];i;i=edge[i].nxt)if(check(edge[i].to)==false) return false;return true;
}
inline bool solve()
{for(int i=1;i<=2*n;i++){if(color[i]) continue;cnt=0;if(check(i)==false){for(int j=1;j<=cnt;j++)color[cur[j]]=color[to(cur[j])]=0;if(check(to(i))==false) return false;}}return true;
}
int main()
{#ifndef ONLINE_JUDGEfreopen("ce.in","r",stdin);#endifwhile(scanf("%d%d",&n,&m)!=EOF){memset(edge,0,sizeof(edge));memset(head,0,sizeof(head));memset(color,0,sizeof(color));t=0;for(int i=1;i<=m;i++){int u,v;scanf("%d%d",&u,&v);add(u,to(v)),add(v,to(u));}if(solve()==true){for(int i=1;i<=2*n;i++)if(color[i]==1)printf("%d\n",i);}else printf("NIE\n");}return 0;
}

转载于:https://www.cnblogs.com/fengxunling/p/10559200.html

hdu1814 Peaceful Commission相关推荐

  1. hdu1814 Peaceful Commission 2-sat

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

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

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

  3. hdu1814 Peaceful Commission,2-sat

    题目大意:一国有n个党派,每个党派在议会中都有2个代表,现要组建和平委员会,要从每个党派在议会的代表中选出1人,一共n人组成和平委员会.已知有一些代表之间存在仇恨,也就是说他们不能同时被选为和平委员会 ...

  4. HDU1814 Peaceful Commission 2SAT

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

  5. [hdu-1814] Peaceful Commission题解

    题目传送门 题意解析:题目就是给了你n组,每一组有两个人,然后在给你m组关系,关系x,y表示x和y不能在放一起,然后让你在每组中各取出一个人,找出字典序最小的一组方案(原题是任意一组方案,但是hdu上 ...

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

  7. HDOJ 1814 Peaceful Commission

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

  8. HDU 1814 Peaceful Commission

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

  9. [HDU 1814] Peaceful Commission

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

最新文章

  1. Leetcode334反转字符串[C++题解]:双指针
  2. Pytorch学习 - 保存模型和重新加载
  3. springboot项目自定义类在配置文件中的提示
  4. 屏蔽 iOS 系统自动更新
  5. Andrew Ng教你如何引领公司进入AI时代
  6. chrome解决跨域(CORS)问题---chrome插件
  7. 大数据之路:阿里巴巴大数据实践,附339页PPT下载
  8. 读取图像矩阵维度必须一致_深度学习在放射治疗中的应用——工具篇(二)矩阵基本操作...
  9. 好消息,scott的asp.net 2.0数据导航系列全部出版了
  10. HDFS与MapReduce
  11. PHP框架剥离的判断是否为手机移动终端的函数
  12. 数据血缘关系图 工具_MCGS组态软件实现数据报表
  13. HBuilder配置浏览器
  14. 移动web基础:视口(viewport),流式布局 JDM京东移动端开发
  15. 在KubeSphere中部署微服务(阡陌)+ DevOps
  16. 阿里内部全新整理,Java面试题库+全栈笔记限时开源
  17. 从零开始的openGL--cs游戏(11)3种常用shader
  18. 运营——线上引流9大方法
  19. 表格数据处理软件,除了Excel还有什么?
  20. 个人计算机能力提升研修计划,教师计算机能力提升个人研修计划

热门文章

  1. java 计算反码_java基础知识-原码、反码、补码、运算符
  2. Java 的混合执行模式
  3. Jackson快速入门
  4. 找对象年龄差多大最好_女生找对象到底最看重什么?调查了全球6万多名女性的结果是......
  5. bootstrap网页模板源码_Go Web 编程--超详细的模板库应用指南
  6. 计算机课中排序选什么,《计算机应用基础课件》1.6 排序复习课程.ppt
  7. qgis折点打断_arcgis在折点处打断并建立网络分析(最短路径等问题)
  8. java date 一个月_java中的日期加一个月的计算
  9. linux runqueue定义,Linux中多CPU的runqueue及抢占
  10. 计算机控制系统第1次作业,计算机控制系统第1次作业86分.doc