自己写的代码

using namespace std;
const int maxn = 1e6;
int head[maxn];
int DFN[maxn],LOW[maxn],stk[maxn],visit[maxn],belong[maxn];
vector<int> scc[maxn];
int tot,idx,cnt,sccnum;
int n,color[maxn],degree[maxn],pos[maxn];
struct Es{ int v; int next; int cost;
}Es[maxn<<1];
vector<int> bkG[maxn];
void init(){ sccnum = tot = idx = cnt = 0; memset(head,-1,sizeof(head)); memset(DFN,0,sizeof(DFN)); memset(LOW,0,sizeof(LOW)); memset(visit,0,sizeof(visit)); memset(color,0,sizeof(color)); memset(degree,0,sizeof(degree));memset(pos,0,sizeof(pos));for(int i = 0;i < maxn;i++) scc[i].clear();for(int i = 0;i < maxn;++i) bkG[i].clear();
}
inline void add_edge(int i,int j,int cost = 1){   Es[cnt].v = j; Es[cnt].cost = cost; Es[cnt].next = head[i]; head[i] = cnt++;
}
void tarjan(int x)
{DFN[x]=LOW[x]=++tot;stk[++idx]=x;visit[x]=1;for(int i=head[x];i!=-1;i=Es[i].next){if(!DFN[Es[i].v]) {tarjan(Es[i].v);LOW[x] = min(LOW[x],LOW[Es[i].v]);}else if(visit[Es[i].v ]){  LOW[x] = min(LOW[x],DFN[Es[i].v]);}}if(LOW[x]==DFN[x]){++sccnum;do{int item = stk[idx];belong[item] = sccnum;scc[sccnum].push_back(item);visit[item]=0;idx--;}while(x!=stk[idx+1]);}return ;
}
bool check(){for(int i = 1;i <= n;i++){if(belong[i] == belong[i+n]) return false;}return true;
}
bool solve(){for(int i = 1;i <= 2*n;++i )if(!DFN[i]) tarjan(i);if(!check()) return false;for(int i = 1;i <= n;++i){if(!pos[belong[i]]){pos[belong[i]] = belong[i+n];pos[belong[i+n]] = belong[i];}}for(int i = 1;i <= 2*n;++i){for(int e = head[i];e != -1;e = Es[e].next){int v = Es[e].v;if(belong[i] != belong[v]){degree[belong[i]]++;bkG[belong[v]].push_back(belong[i]);}}}queue<int> que;for(int i = 1;i <= sccnum;++i){if(!degree[i])que.push(i);}while(!que.empty()){int u = que.front();que.pop();if(!color[u]){color[u] = 1;color[pos[u]] = 2;}for(int i = 0;i < bkG[u].size();++i){int v = bkG[u][i];degree[v]--;if(!degree[v])que.push(v);}}//在这里准备输出答案//为1表示选中,为2表示为选中/*for(int i = 1;i <= n;++i){if(color[belong[i]] == 1) {//Yes}else{//No}} */return true;
}

//使用方法

1.init()

2.用add_edge建图

3.用solve()函数求解

2-sat模板- 输出可行解相关推荐

  1. php输出分组,ThinkPHP 项目分组中的模板输出

    模板输出 启用了项目分组后,模板输出路径同原来相比有一些差别. 默认输出 当使用 $this->display() 指令输出默认模板时,输出的模板路径加上了分组名: TPL/模板默认主题/分组名 ...

  2. Java POI SXSSFWorkbook 读取模板,输出

    Java POI 用 SXSSFWorkbook 读取模板,输出 公司的项目,用户投诉,说只要点击模板下载功能,就会导致整个服务全部停掉. 之前这个功能由于数据量并没有那么多,所以一直都没有发生过这种 ...

  3. Oracle EBS 动态调用 XML Publisher 模板 输出不同的报表

    Oracle EBS 动态调用 XML Publisher 模板 输出不同的报表 if fnd_request.add_layout(template_appl_name => 'CUX',   ...

  4. ansible常用模块之 -- template模块 – 将文件模板输出到远程服务器

    ansible常用模块之 -- template模块 – 将文件模板输出到远程服务器 template模块 – 将文件模板输出到远程服务器 一.摘要 二.参数 三.示例 template模块 – 将文 ...

  5. display方法php,ThinkPHP 模板输出 display 方法

    默认输出 模板默认输出是指输出指令 display 方法中不带任何参数,系统默认输出对应模板. 格式: $this->display(); 输出对应的模板: TPL/模板默认主题/[分组名/]模 ...

  6. json里面返回模板输出的html,在JSON响应中返回完整页面的HTML而不是字符串输出...

    我想通过使用web方法的ajax实现最简单的任务.我的web方法如下在JSON响应中返回完整页面的HTML而不是字符串输出 [WebMethod] public static string GetDa ...

  7. php ci框架 模板输出,CodeIgniter模板引擎使用实例

    一.示例: 通常在使用codeigniter的时候经常使用这样的方式载入: $this->load->view('about', $data); 通过这个类库,可以将一个视图载入到这个模板 ...

  8. pku 3683 Priest John's Busiest Day 2-sat判断有误解+输出可行解

    http://poj.org/problem?id=3683 题意: 一个教父,在一天中要给n对新婚夫妇举行婚礼.已知每对夫妇举行婚礼的起始时间Si和终止时间Ti ,教父送祝福的时间要么在Si-> ...

  9. java ftl 模板 输出list_java freemarker .ftl模板导出word文档(含文字,List, 图片)

    此处只介绍word模板部分,java代码等请自行百度,都一样. 辅助工具:notepad++,百度在线xml格式化 A.不含遍历的简单处理 不含遍历的简单处理 简单的一个key一个值使用比较简单,主要 ...

最新文章

  1. 内存溢出_容易造成单片机内存溢出的几个陷阱
  2. 和ajax区别_AJAX、Fetch和Axios的细微区别
  3. 个人信息管理系统代码_学生信息管理系统(springboot + vue)
  4. 嵩天python笔记_嵩天Python学习笔记-05
  5. 安全攻击层出不穷,绿盟科技“智慧安全 3.0”安全防护再升级
  6. pl sql 连接mysql_PL/SQL 连接mysql步骤
  7. 热烈祝贺《大数据》主编郑纬民教授当选中国工程院院士!!!
  8. python 三维曲线拟合_基于三维数据和参数的Scipy曲线拟合
  9. vue路由匹配实现包容性_成为多元化和包容性领导者的3个关键策略
  10. Redis配置文件解读
  11. 淘淘商城第17讲——引用Dubbo服务
  12. steam登录api_steam饰品骗术——骗你说你的账户违反了 Steam 服务协议条款,然后让你转出库存给你的好友。...
  13. linux版的微博客户端,推荐Ubuntu Linux下的新浪微博客户端
  14. 安装科来-csnas_tech_12.0.5.12506_x64
  15. python upd接收数据+动态折线图+线程间通信+字节计算
  16. linux段错误core dumped,Linux下Segmentation fault(core dumped)简单调试方法
  17. Ubuntu折腾--优化wine 微信小黑框处理
  18. 用python制作贺卡_使用Python创作自己的圣诞节动图贺卡,制作简单即刻生成
  19. 2014-04网易、微软、百度、腾讯、阿里实习生招聘经验与经过
  20. js字符串与json对象处理

热门文章

  1. python while循环true_Python while循环,pause while not,true时继续?
  2. 拓扑排序C++实现+实例解析(详解 兄弟们冲呀呀呀呀呀呀呀)
  3. java中的线程不安全和实例解析
  4. [SpringSecurity]web权限方案_CSRF功能
  5. [蓝桥杯2016决赛]一步之遥-枚举
  6. 双端队列 BFS + Chamber of Secrets CodeForces - 173B
  7. H264学习_基本数据结构
  8. Gauss高斯消元——模板
  9. CF938G Shortest Path Queries(线性基/线段树分治/异或)
  10. 2021牛客暑期多校训练营7 xay loves monotonicity 线段树区间合并