题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1814

  简单的2sat题。

  1. //STATUS:C++_AC_390MS_996KB
  2. #include <functional>
  3. #include <algorithm>
  4. #include <iostream>
  5. //#include <ext/rope>
  6. #include <fstream>
  7. #include <sstream>
  8. #include <iomanip>
  9. #include <numeric>
  10. #include <cstring>
  11. #include <cassert>
  12. #include <cstdio>
  13. #include <string>
  14. #include <vector>
  15. #include <bitset>
  16. #include <queue>
  17. #include <stack>
  18. #include <cmath>
  19. #include <ctime>
  20. #include <list>
  21. #include <set>
  22. #include <map>
  23. using namespace std;
  24. //using namespace __gnu_cxx;
  25. //define
  26. #define pii pair<int,int>
  27. #define mem(a,b) memset(a,b,sizeof(a))
  28. #define lson l,mid,rt<<1
  29. #define rson mid+1,r,rt<<1|1
  30. #define PI acos(-1.0)
  31. //typedef
  32. typedef long long LL;
  33. typedef unsigned long long ULL;
  34. //const
  35. const int N=;
  36. const int INF=0x3f3f3f3f;
  37. const int MOD=,STA=;
  38. const LL LNF=1LL<<;
  39. const double EPS=1e-;
  40. const double OO=1e15;
  41. const int dx[]={-,,,};
  42. const int dy[]={,,,-};
  43. const int day[]={,,,,,,,,,,,,};
  44. //Daily Use ...
  45. inline int sign(double x){return (x>EPS)-(x<-EPS);}
  46. template<class T> T gcd(T a,T b){return b?gcd(b,a%b):a;}
  47. template<class T> T lcm(T a,T b){return a/gcd(a,b)*b;}
  48. template<class T> inline T lcm(T a,T b,T d){return a/d*b;}
  49. template<class T> inline T Min(T a,T b){return a<b?a:b;}
  50. template<class T> inline T Max(T a,T b){return a>b?a:b;}
  51. template<class T> inline T Min(T a,T b,T c){return min(min(a, b),c);}
  52. template<class T> inline T Max(T a,T b,T c){return max(max(a, b),c);}
  53. template<class T> inline T Min(T a,T b,T c,T d){return min(min(a, b),min(c,d));}
  54. template<class T> inline T Max(T a,T b,T c,T d){return max(max(a, b),max(c,d));}
  55. //End
  56.  
  57. int first[N*],next[*],vis[N*],S[N*];
  58. int n,m,mt,cnt;
  59.  
  60. struct Edge{
  61. int u,v;
  62. }e[*];
  63.  
  64. void adde(int a,int b)
  65. {
  66. e[mt].u=a,e[mt].v=b;
  67. next[mt]=first[a];first[a]=mt++;
  68. }
  69.  
  70. int dfs(int u)
  71. {
  72. if(vis[u^])return ;
  73. if(vis[u])return ;
  74. int i;
  75. vis[u]=;
  76. S[cnt++]=u;
  77. for(i=first[u];i!=-;i=next[i]){
  78. if(!dfs(e[i].v))return ;
  79. }
  80. return ;
  81. }
  82.  
  83. int Twosat()
  84. {
  85. int i,j;
  86. for(i=;i<n;i+=){
  87. if(vis[i] || vis[i^])continue;
  88. cnt=;
  89. if(!dfs(i)){
  90. while(cnt)vis[S[--cnt]]=;
  91. if(!dfs(i^))return ;
  92. }
  93. }
  94. return ;
  95. }
  96.  
  97. int main()
  98. {
  99. // freopen("in.txt","r",stdin);
  100. int i,j,a,b;
  101. while(~scanf("%d%d",&n,&m))
  102. {
  103. n<<=;
  104. mem(first,-);mt=;
  105. mem(vis,);
  106. for(i=;i<m;i++){
  107. scanf("%d%d",&a,&b);
  108. a--,b--;
  109. adde(a,b^);
  110. adde(b,a^);
  111. }
  112.  
  113. if(Twosat()){
  114. for(i=;i<n;i+=){
  115. printf("%d\n",(vis[i]?i:i^)+);
  116. }
  117. }
  118. else puts("NIE");
  119. }
  120. return ;
  121. }

HDU-1814 Peaceful Commission 2sat的更多相关文章

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

  2. hdu 1814 Peaceful Commission (2-sat 输出字典序最小的路径)

    Peaceful Commission Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Oth ...

  3. HDU 1814 Peaceful Commission(2-sat 模板题输出最小字典序解决方式)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1814 Problem Description The Public Peace Commission ...

  4. HDU 1814 Peaceful Commission

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

  5. HDOJ 1814 Peaceful Commission

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

  6. hdu1814 Peaceful Commission——2-SAT

    题目:http://acm.hdu.edu.cn/showproblem.php?pid=1814 第一次的2-SAT,推荐博客:https://blog.csdn.net/jarjingx/arti ...

  7. 图论--2-SAT--HDU/HDOJ 1814 Peaceful Commission

    Peaceful Commission Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Oth ...

  8. 【HDU】1814 Peaceful Commission

    http://acm.hdu.edu.cn/showproblem.php?pid=1814 题意:n个2人组,编号分别为2n和2n+1,每个组选一个人出来,且给出m条关系(x,y)使得选了x就不能选 ...

  9. 【HDOJ】1814 Peaceful Commission

    2-SAT基础题目. /* 1814 */ #include <iostream> #include <vector> #include <algorithm> # ...

随机推荐

  1. Razor语法小记

    1.代码块中,<text>标签用来输出,如: @{ <text>sdfsdf</text> } 输出Html: sdfsdf

  2. <四> jQuery 事件

    $(document).ready(function) 将函数绑定到文档的就绪事件(当文档完成加载时) $(selector).click(function) 触发或将函数绑定到被选元素的点击事件 $ ...

  3. DB天气安卓客户端测试计划

      分辨率 屏幕ppi 网络环境 操作系统 os 用户类型 地点 组合总数 其他 samsung                   htc                   小米         ...

  4. HDU 1560 DNA sequence (IDA* 迭代加深 搜索)

    题目地址:http://acm.hdu.edu.cn/showproblem.php?pid=1560 BFS题解:http://www.cnblogs.com/crazyapple/p/321810 ...

  5. 计算S(n)=a+aa+aaa+...... 其中a是一个数字

    描述 计算S(n)=a+aa+aaa+...... 其中a是一个数字 输入数据 两个分别表示a和n的整数 输出数据 一个表示S(n)的整数 输入示例 3 5 输出示例 37035 # include ...

  6. 西门子plc串口通讯方式

    西门子plc串口通讯的三种方式 时间:2015-10-25 14:31:55编辑:电工栏目:西门子plc 导读:西门子plc串口通讯的三种方式,分为RS485 串口通信.PPI 通信.MPI 通信,自 ...

  7. RPM是RedHat Package Manager(RedHat软件包管理工具)

    RPM是RedHat Package Manager(RedHat软件包管理工具)类似Windows里面的“添加/删除程序” rpm 执行安装包二进制包(Binary)以及源代码包(Source)两种 ...

  8. [HDOJ - 5282] Senior's String 【DP】

    题目链接:BZOJ - 5282 题目分析 LCS 就是用经典的 O(n^2) DP 解决,f[i][j] 表示 x 串前 i 个字符与 y 串前 j 个字符的 LCS 长度. f[i][j] = m ...

  9. [转载]C#多线程学习(一) 多线程的相关概念

    原文地址:http://www.cnblogs.com/xugang/archive/2008/04/06/1138856.html 什么是进程?当一个程序开始运行时,它就是一个进程,进程包括运行中的 ...

  10. 被FBI点名的中国黑客-Lion

    网名:Lion(狮子) 真实姓名:林勇 QQ:21509     简介:红客联盟创始人(该组织在2001年5月的黑客大战中一举成名,会员人数最多时达到6万,很有影响力),现在安氏因特网安全系统(中国) ...