【2-SAT字典序最小解】HDU1814[Peaceful Commission]题解
来源:互联网 发布:js获取fileupload路径 编辑:程序博客网 时间:2024/06/07 09:35
题目概述
有n个组,每个组有2个领导人(i组两人的标号为2*i-1和2*i),每个组只能选一个领导人参加会议。再给出m条关系x,y,表示x与y不和,不能同时参加会议,求字典序最小解。
解题报告
这道题就是经典的2-SAT字典序最小解啊,用暴力解法就可以水过去。
虽然看起来时间复杂度十分不正常,但要相信2-SAT暴力的玄学……
WTF?这道题多组数据?题目里根本就没有说??
示例程序
#include<cstdio>#include<cstring>using namespace std;const int maxn=16000,maxm=40000;int n,m;int E,lnk[maxn+5],nxt[maxm+5],son[maxm+5];bool vis[maxn+5];void Add(int x,int y) {son[++E]=y;nxt[E]=lnk[x];lnk[x]=E;}int top,stk[maxn+5];bool Dfs(int x){ if (vis[x]) return true; if (vis[x^1]) return false; vis[x]=true;stk[++top]=x; for (int j=lnk[x];j;j=nxt[j]) if (!Dfs(son[j])) return false; return true;}bool Two_SAT(){ memset(vis,0,sizeof(vis)); for (int i=0;i<2*n;i+=2) if (!vis[i]&&!vis[i^1]) { top=0;if (Dfs(i)) continue; while (top) vis[stk[top--]]=false; if (!Dfs(i^1)) return false; //能选i优先选i可以达到字典序最小的效果 } return true;}int main(){ freopen("program.in","r",stdin); freopen("program.out","w",stdout); while (~scanf("%d%d",&n,&m)) { E=0;memset(lnk,0,sizeof(lnk)); while (m--) { int x,y;scanf("%d%d",&x,&y);x--;y--; Add(x,y^1);Add(y,x^1); } if (!Two_SAT()) printf("NIE\n"); else for (int i=0;i<2*n;i++) if (vis[i]) printf("%d\n",i+1); } return 0;}
阅读全文
0 0
- 【2-SAT字典序最小解】HDU1814[Peaceful Commission]题解
- hdu1814 Peaceful Commission,2-sat
- hdu1814 Peaceful Commission 2-sat
- hdu1814 Peaceful Commission(2-sat)
- hdu1814 Peaceful Commission 2-SAT
- HDU 1814 Peaceful Commission(2-sat 输出字典序最小解 )
- hdoj 1814 Peaceful Commission 【2-sat暴力染色 求解字典序最小解】
- [2-SAT 字典序最小解 暴力dfs 模板题] HDU 1814 Peaceful Commission
- HDU 1814:Peaceful Commission(2-SAT的字典序最小解)
- HDU1814.Peaceful Commission——2-sat输出字典序最小的解
- [HDU1814]Peaceful Commission(2-SAT)
- hdu1814 Peaceful Commission(2-sat)
- HDU1814 Peaceful Commission —— 2-sat 染色法
- HDU 1814 Peaceful Commission(2-SAT:最小字典序)
- hdu 1814 Peaceful Commission 2-sat 按字典序输出
- HDU 1814Peaceful Commission (最小字典序 2-SAT)
- HDU1814 Peaceful Commission
- hdu1814 Peaceful Commission--dfs
- 匈牙利算法
- 【内功篇】自增与自减
- 各系统平台hosts文件存放路径
- 日志一:MVC MySql EF模型发布服务器是遇到的问题 DataBase First
- 准备开始迎接新的挑战
- 【2-SAT字典序最小解】HDU1814[Peaceful Commission]题解
- MFC编程--添加基于对话框的菜单栏
- hdu3729 I'm Telling the Truth【二分图匹配】
- struts2笔记(一)
- 运算符、表达式、分支结构
- AndroidStudio里的常用控件
- UVA10935ThrowingCardAwayI
- 虚拟化技术中KVM,Xen,Qemu的区别和联系
- intellij的一个web项目