题意:
     题意就是最基础的2sat,关系只有矛盾关系,然后二选一,关键是这个题目是输出字典序最小的那组解。

思路:

     输出字典序最小,用强连通那个实现不了(起码没看到有人实现),其实我们可以直接暴力,我们可以给某个点染色,分成无色(W)红色(R)和蓝色(B)红色是我们要的答案,对于每一个点我们先尽可能的吧他的a染成红色,把他的~a染成蓝色,如果发现矛盾,就是出现a是蓝色的了,那么我们就把当前这个连通块重新清成W吧其实点换成~a这样在继续染色,如果还是不行,那么就证明无解。否则这样全部染完色之后的红色点就是我们要的点。时间复杂度是 n * m * 2,大约也就n * m左右。本以为会超时,感觉到亿了,结果没有,1140ms AC ,貌似是有直接求什么字典序最小的固定算法吧!反正有也不会。哎!

#include<stdio.h>
#include<string.h>
#include<queue>#define N_node 16000 + 100
#define N_edge 40000 + 400
#define W 0
#define R 1
#define B 2

using namespace std;typedef struct
{int to ,next;
}STAR;STAR E[N_edge];
int list[N_node] ,tot;
int col[N_node];
queue<int>q;void add(int a ,int b)
{E[++tot].to = b;E[tot].next = list[a];list[a] = tot;
}bool DFS(int s)
{if(col[s] == B) return 0;if(col[s] == R) return 1;col[s] = R ,col[s^1] = B;q.push(s);for(int k = list[s] ;k ;k = E[k].next)if(!DFS(E[k].to)) return 0;return 1;
}bool solve(int n)
{memset(col ,W ,sizeof(col));for(int i = 0 ;i < n ;i ++){if(col[i]) continue;while(!q.empty()) q.pop();if(!DFS(i)){while(!q.empty()){col[q.front()] = col[q.front()^1] = W;q.pop();}if(!DFS(i^1)) return 0;}}return 1;
}int main ()
{int n ,m ,i ,a ,b;while(~scanf("%d %d" ,&n ,&m)){memset(list ,0 ,sizeof(list)) ,tot = 1;for(i = 1 ;i <= m ;i ++){scanf("%d %d" ,&a ,&b);a-- ,b--;add(a ,b^1) ,add(b ,a^1);}if(solve(n * 2)){for(i = 1 ;i <= n * 2 ;i ++)if(col[i-1] == R) printf("%d\n" ,i);}else printf("NIE\n");}return 0;
}

hdu 1814 字典序最小的2sat(暴力深搜)相关推荐

  1. HDU 1427 速算24点 (深搜)

    题目链接 Problem Description 速算24点相信绝大多数人都玩过.就是随机给你四张牌,包括A(1),2,3,4,5,6,7,8,9,10,J(11),Q(12),K(13).要求只用' ...

  2. hdu 1312深搜入门题

    2019独角兽企业重金招聘Python工程师标准>>> Red and Black Problem Description There is a rectangular room, ...

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

  4. hihoCoder #1468 : 2-SAT·hihoCoder新春晚会(2-SAT 输出字典序最小的方案)

    描述 hihoCoder新春晚会正在紧张地筹备中.晚会分为上半场和下半场,总导演小Hi现在要为N个节目安排演出时间(上半场或下半场).为了描述方便,我们将第i个节目对应两个编号2i-1和2i,分别表示 ...

  5. HDU 6301.Distinct Values-贪心、构造字典序最小的数列 (2018 Multi-University Training Contest 1 1004)...

    HDU6301.Distinct Values 这个题就是给你区间要求区间内的数都不相同,然后要求是字典序最小,直接贪心走一遍,但是自己写的时候,思路没有错,初始化写挫了... 将区间按左端点小的排序 ...

  6. HDU 1814 Peaceful Commission

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

  7. 背包问题 输出方案、输出字典序最小方案、可行方案数、最优方案总数

    原文地址:https://blog.csdn.net/ronaldo7_zyb/article/details/81069906 1. 要求输出方案: 以01背包为例 我们可以知到,01背包用一维数组 ...

  8. UVA116 单向TSP Unidirectional TSP(多阶段决策问题、输出字典序最小的方案、DAG上DP)

    整理的算法模板合集: ACM模板 题目传送门 简单的多阶段决策问题. 多段图DAG,其节点可以划分为若干个阶段,每一个阶段只由上一个阶段所决定. 因为本题要求输出从前到后的方案,所以我们转移方程的时候 ...

  9. UVA10537 The Toll! Revisited (思维、最短路、输出字典序最小路径)

    整理的算法模板合集: ACM模板 题目链接 我们要注意去的时候交的n/20单位的货物,但是倒着回去求答案的时候我们要加上ceil(n/19.0)(自己手算) 字典序中大写字母比小写字母更小 注意看数据 ...

最新文章

  1. MaxScale:实现MySQL读写分离与负载均衡的中间件利器
  2. Android FeceDetector(人脸识别)
  3. Spark源码的编译过程详细解读(各版本)(博主推荐)
  4. sql server无效的对象名称 - 但表列在SSMS表列表中
  5. bind函数怎么用JAVA_c++bind函数的用法
  6. latex使用subequations后,段后首行文字不对齐
  7. MyBatis查询结果resultType返回值类型详细介绍
  8. TypeScript 里 object 和 Object 的区别
  9. 网博士自助建站系统_自助建站:自助建站到底好还是不好?
  10. java解析java源码_JAVA语言-Java源码解析-Stack源码分析
  11. linux uuid/uuid.h
  12. 一串字字符中多个逗号转换为一个,既标准分隔符(正则表达式)
  13. 腾讯 2016 春季实习校招一面回忆(C++ 后台)
  14. Windows下Redis的使用
  15. java常用api-字符串
  16. python变量后面加星号_易忘易忽略的Python入门知识点-续(一)
  17. 通过Properties读取配置文件
  18. 中国车机行业竞争态势与未来发展策略分析报告2022-2028年
  19. 光猫需要已经开通了 telnet 功能
  20. 算法高级(45)-阿尔法狗到底有多厉害?

热门文章

  1. 程序员为什么不会修电脑?
  2. 自动发布工具应该具备的11个标准特征
  3. js form中的onsubmit和action
  4. N!的尾部连续0的个数
  5. silverlight 客户端之间的通讯
  6. 通过WMIC命令远程打开远程计算机的远程桌面(Remote Desktop)功能
  7. 深入理解面向对象 -- 基于 JavaScript 实现
  8. R语言包在linux上的安装等知识
  9. P1642 规划 01分数规划+树形DP
  10. 数据库 - mysql内置功能