//暴力DFS,求字典序最小的解,也是求字典序唯一的方法
#include<cstdio>
#include<cstring>
#include<vector>
using namespace std;
const int maxn=10000+10;
struct TwoSAT
{int n;//原始图的节点数(未翻倍)vector<int> G[maxn*2];//G[i]==j表示如果mark[i]=true,那么mark[j]也要=truebool mark[maxn*2];//标记int S[maxn*2],c;//S和c用来记录一次dfs遍历的所有节点编号void init(int n){this->n=n;for(int i=0;i<2*n;i++) G[i].clear();memset(mark,0,sizeof(mark));}//加入(x,xval)或(y,yval)条件//xval=0表示假,yval=1表示真void add_clause(int x,int xval,int y,int yval){x=x*2+xval;y=y*2+yval;G[x^1].push_back(y);G[y^1].push_back(x);}//从x执行dfs遍历,途径的所有点都标记//如果不能标记,那么返回falsebool dfs(int x){if(mark[x^1]) return false;//这两句的位置不能调换if(mark[x]) return true;mark[x]=true;S[c++]=x;for(int i=0;i<G[x].size();i++)if(!dfs(G[x][i])) return false;return true;}//判断当前2-SAT问题是否有解bool solve(){for(int i=0;i<2*n;i+=2)if(!mark[i] && !mark[i+1]){c=0;if(!dfs(i)){while(c>0) mark[S[--c]]=false;if(!dfs(i+1)) return false;}}return true;}
};

图论--2-SAT--暴力染色法模板(字典序最小解) RQ的板子相关推荐

  1. 【算法竞赛模板】二分图(染色法、匈牙利法)

    二分图 一.定义 二.应用 三.算法模板 ① 染色法模板 ② 匈牙利模板 - 邻接表 ③ 匈牙利模板 - 邻接矩阵   废话不多说,本苟蒻发文,有任何问题欢迎大佬斧正~(>人<:) 一.定 ...

  2. 常用代码模板3——搜索与图论(Bellman-Ford算法 、spfa 算法、floyd算法、Kruskal算法、染色法、匈牙利算法 )

    目录 一.树与图的存储 二.树与图的遍历 (1) 深度优先遍历 -- 模板题 AcWing 846. 树的重心 (2) 宽度优先遍历 -- 模板题 AcWing 847. 图中点的层次 拓扑排序 -- ...

  3. 二分图(染色法+匈牙利法)学习笔记

    一.二分图模板 二分图的性质: 集合内部没有边 二分图当且仅当图中不含奇数环 1.1. 染色法判断是否为二分图 简要介绍 采用 dfsdfsdfs 遍历图.尝试把和一个点相连的所有的点涂为不同色(一共 ...

  4. AcWing 860. 染色法判定二分图 (染色法)

    题目链接 : 点击查看 题目描述 : 给定一个 n 个点 m 条边的无向图,图中可能存在重边和自环. 请你判断这个图是否是二分图. 输入输出格式 : 输入 第一行包含两个整数 n 和 m. 接下来 m ...

  5. 染色法判断无向图是否为二部图

    二分图 二分图又称作二部图,是图论中的一种特殊模型. 设G=(V,E)是一个无向图,如果顶点V可分割为两个互不相交的子集(A,B),并且图中的每条边(i,j)所关联的两个顶点i和j分别属于这两个不同的 ...

  6. 【染色法判别二分图】

    模板题: AcWing 860. 染色法判定二分图 解题思路: (1)判断一个图是否是二分图,判断是否存在奇数环即可,用染色法判断即可. (2)二分图: 是指可以将点集分成两半,每个集合内都没有边,但 ...

  7. 染色法求解“微信群覆盖”

    出处:染色法求解"微信群覆盖" 微信有很多群,现进行如下抽象: (1) 每个微信群由一个唯一的gid标识: (2) 微信群内每个用户由一个唯一的uid标识: (3) 一个用户可以加 ...

  8. 图论二分图问题讲解-染色法和匈牙利算法

    二分图 概述: 二分图又称作二部图,是图论中的一种特殊模型. 设G=(V,E)是一个无向图,如果顶点V可分割为两个互不相交的子集(A,B),并且图中的每条边(i,j)所关联的两个顶点i和j分别属于这两 ...

  9. [日常] 算法-旋转字符串-暴力移位法

    题目描述 给定一个字符串,要求把字符串前面的若干个字符移动到字符串的尾部,如把字符串"abcdef"前面的2个字符'a'和'b'移动到字符串的尾部,使得原字符串变成字符串" ...

最新文章

  1. 找出一堆数中最小的前K个数
  2. C++获取本机的ip地址程序
  3. JQData数据提取及MySQL简单操作——基于Python
  4. equal_range
  5. 数论只会 for 循环 (数学+分块+记忆化)
  6. 教师教学质量评价系统c语言,教师课堂教学评价大全_浅谈C语言课堂教学方法
  7. 【Shell】检查字符串大小
  8. Maven的核心概念
  9. python画三维图-Python使用matplotlib绘制三维图形示例
  10. php 日期 星期_php日期如何转星期
  11. alisql mysql5.7_wps2016抢鲜版_AliSQL 5.6.32 vs MySQL 5.7.15抢鲜测试-云栖社区-阿里云
  12. mysql linux 安装包下载_mysql官网下载linux版本安装包
  13. 电磁铁轭铁和极头收缩角
  14. 教育企业邮箱购买哪个好用,还有英文邮件系统?
  15. arduino传感器大全
  16. Android底部导航栏的三种风格实现
  17. python安装PyQt5_stylesheets
  18. Lua Busted 单元测试实战
  19. .Net MAUI 安卓状态栏透明、半透明、全屏
  20. NOIP2016模拟 星际争霸(二分)

热门文章

  1. 在保护继承中基类的共有成员_C++学习大纲:继承方式的调整
  2. 解决eclipse闪退的办法
  3. 开源会议系统openmeetings安装
  4. 第83天:jQuery中操作form表单
  5. CSS3伪类选择器:nth-child()(nth-child(odd)/nth-child(even))
  6. 【Java每日一题】20161018
  7. thymeleaf 学习笔记-基础篇(中文教程)
  8. django在nginx uwsgi和tornado异步方案在项目中的体验
  9. 腾讯的迷你门户首页新闻用到的Silverlight技术引用
  10. 关于struts2在页面请求转发到action的问题