hdu1814 Peaceful Commission 2-sat
hdu1814 Peaceful Commission
链接
emm,三个链接,三个都不同
loj随便做
hdu字典序最小
bzoj求合法方案数
思路
loj是任意一组解,直接跑tarjan然后判。
hdu是求最小字典序的2-sat解,真的是码力弱的要死呀。
只有O(N*M)的dfs复杂度能做。
如果不会2-sat的看这里
代码
#include <bits/stdc++.h>
using namespace std;
const int N=1e5+7;
int read() {int x=0,f=1;char s=getchar();for(;s>'9'||s<'0';s=getchar()) if(s=='-') f=-1;for(;s<='9'&&s>='0';s=getchar()) x=x*10+s-'0';return x*f;
}
int n,m;
struct node {int v,nxt;
}e[N];
int head[N],tot;
void add(int u,int v) {
// cout<<u<<" "<<v<<"\n";e[++tot].v=v;e[tot].nxt=head[u];head[u]=tot;
}
int stak[N],top,vis[N];
bool dfs(int u) {if(vis[u]) return 1;if(vis[u^1]) return 0;vis[u]=1;stak[++top]=u;for(int i=head[u];i;i=e[i].nxt) {int v=e[i].v;if(!dfs(v)) return 0;}return 1;
}
void clear() {memset(head,0,sizeof(head));memset(vis,0,sizeof(vis));tot=0;
}
int main() {
// freopen("a.in","r",stdin);while(scanf("%d%d",&n,&m)!=EOF) {clear();for(int i=1;i<=m;++i) {int x=read()-1,y=read()-1;add(x,y^1);add(y,x^1);}int flag=0;for(int i=0;i<n+n;i+=2) {if(!vis[i]&&!vis[i+1]) {top=0;if(!dfs(i)) {while(top) vis[stak[top--]]=0;if(!dfs(i+1)) {flag=1;break;}}}}if(flag) puts("NIE");else {for(int i=0;i<n+n;++i)if(vis[i]) printf("%d\n",i+1);}} return 0;
}
转载于:https://www.cnblogs.com/dsrdsr/p/10467366.html
hdu1814 Peaceful Commission 2-sat相关推荐
- hdu1814 Peaceful Commission 2-SAT建图入门
题面 The Public Peace Commission should be legislated in Parliament of The Democratic Republic of Byte ...
- hdu1814 Peaceful Commission
题目链接:戳我 菜得不行了,直到今天才刚开始学2-SAT.... 2-SAT的模板,因为是求最小字典序,所以只能用上限为\(O(nm)\)的最暴力的方法来做... #include<iostre ...
- hdu1814 Peaceful Commission,2-sat
题目大意:一国有n个党派,每个党派在议会中都有2个代表,现要组建和平委员会,要从每个党派在议会的代表中选出1人,一共n人组成和平委员会.已知有一些代表之间存在仇恨,也就是说他们不能同时被选为和平委员会 ...
- HDU1814 Peaceful Commission 2SAT
http://acm.hdu.edu.cn/showproblem.php?pid=1814 输出最小字典序. 1 #include<bits/stdc++.h> 2 const int ...
- [hdu-1814] Peaceful Commission题解
题目传送门 题意解析:题目就是给了你n组,每一组有两个人,然后在给你m组关系,关系x,y表示x和y不能在放一起,然后让你在每组中各取出一个人,找出字典序最小的一组方案(原题是任意一组方案,但是hdu上 ...
- 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 ...
- HDOJ 1814 Peaceful Commission
经典2sat裸题,dfs的2sat能够方便输出字典序最小的解... Peaceful Commission Time Limit: 10000/5000 MS (Java/Others) Mem ...
- hdu 1814 Peaceful Commission 题解
题目传送门 题目大意: 有 nnn 个团队,每个团队两个人,现在要组成一个 nnn 人的组织,要求每个团队中只能有 111 个人在组织里,给出 mmm 组憎恶关系,相互憎恶的两人不能同时在组织里,给出 ...
- HDU 1814 Peaceful Commission
2-SAT,输出字典序最小的解,白书模板. //TwoSAT输出字典序最小的解的模板 //注意:0,1是一组,1,2是一组..... #include<cstdio> #include&l ...
最新文章
- 对SQLSERVER进行性能监控
- ROS2学习(五).ROS概念 - ROS_DOMAIN_ID
- 51单片机之定时器\计数器的工作原理
- 运维自动化之使用PHP+MYSQL+SHELL打造私有监控系统(四)
- 数字三角形_递归_递推(动态规划)
- HTML5与CSS3权威指南.pdf7
- virtualenv虚拟独立python环境使用
- Machine Learning - III. Linear Algebra Review线性代数 (Week 1, Optional)
- 再谈指标体系建设的3点建议
- 查找算法之二 二分查找(C++版本)
- 安卓boot.img文件详细介绍-解包,编辑,打包
- PMP-全书知识重点图
- mac上好用的下载器有哪些,mac下载种子用什么软件
- 关于Tomcat和Servlet容器的小结
- Android像素密度dpi/ppi计算公式,px、sp、dp互转工具类——概念解释
- 2021-7-28-自动化运维Ansible
- 『认知升级』是比其他一切都更加重要的思维模型转变
- Ubuntu虚拟机安装EDA工具:VCS+Verdi+dve2018方法教程
- 校园外卖系统 - 「农职邦」微信原生云开发小程序
- 独立站选杂货爆品站还是精耕垂直站?