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相关推荐

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

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

  2. hdu1814 Peaceful Commission

    题目链接:戳我 菜得不行了,直到今天才刚开始学2-SAT.... 2-SAT的模板,因为是求最小字典序,所以只能用上限为\(O(nm)\)的最暴力的方法来做... #include<iostre ...

  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 题解

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

  9. HDU 1814 Peaceful Commission

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

最新文章

  1. 对SQLSERVER进行性能监控
  2. ROS2学习(五).ROS概念 - ROS_DOMAIN_ID
  3. 51单片机之定时器\计数器的工作原理
  4. 运维自动化之使用PHP+MYSQL+SHELL打造私有监控系统(四)
  5. 数字三角形_递归_递推(动态规划)
  6. HTML5与CSS3权威指南.pdf7
  7. virtualenv虚拟独立python环境使用
  8. Machine Learning - III. Linear Algebra Review线性代数 (Week 1, Optional)
  9. 再谈指标体系建设的3点建议
  10. 查找算法之二 二分查找(C++版本)
  11. 安卓boot.img文件详细介绍-解包,编辑,打包
  12. PMP-全书知识重点图
  13. mac上好用的下载器有哪些,mac下载种子用什么软件
  14. 关于Tomcat和Servlet容器的小结
  15. Android像素密度dpi/ppi计算公式,px、sp、dp互转工具类——概念解释
  16. 2021-7-28-自动化运维Ansible
  17. 『认知升级』是比其他一切都更加重要的思维模型转变
  18. Ubuntu虚拟机安装EDA工具:VCS+Verdi+dve2018方法教程
  19. 校园外卖系统 - 「农职邦」微信原生云开发小程序
  20. 独立站选杂货爆品站还是精耕垂直站?

热门文章

  1. 易语言调用大漠插件实现多线程后台绑定游戏窗口和打怪
  2. 使用环信进行即时通信IM
  3. 服务器内存性能查看,如何查看服务器内存使用大小
  4. Easypack: Ansible方式部署工具中升级Dashboard至2.0.0版
  5. sqlserver如何删库跑路
  6. Java实现用户异地登陆踢人操作
  7. ~2 ccf 2022-03-1 未初始化警告
  8. 从简历被刷到拿字节跳动 offer,我花了一年时间
  9. python学习:向Firebird数据库表中插入数据
  10. 用js来完成一个赛车的小游戏