2-sat——hdu3062基础
时间:2019-05-15
本文章向大家介绍2-sat——hdu3062基础,主要包括2-sat——hdu3062基础使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
hdu就是会卡cin,,
另一种建模方式,把点i拆成i*2,i*2+1,有时候这样会比较简单
#include<bits/stdc++.h> using namespace std; #define N 4005 #define M 2000005 struct Edge{int to,nxt;}e[M<<1]; int n,m,head[N],tot; void add(int u,int v){ e[tot].to=v;e[tot].nxt=head[u];head[u]=tot++; } int low[N],dfn[N],cnt,id[N],ind,stk[N],top,ins[N]; void tarjan(int x){ dfn[x]=low[x]=++ind; stk[++top]=x;ins[x]=1; for(int i=head[x];i!=-1;i=e[i].nxt){ int y=e[i].to; if(!dfn[y]){ tarjan(y); low[x]=min(low[x],low[y]); } else if(ins[y]) low[x]=min(low[x],low[y]); } if(dfn[x]==low[x]){ cnt++;int y; do{ y=stk[top--]; ins[y]=0; id[y]=cnt; }while(x!=y); } } void init(){ cnt=tot=top=ind=0; memset(head,-1,sizeof head); memset(dfn,0,sizeof dfn); memset(low,0,sizeof low); memset(id,0,sizeof id); } int main(){ while(cin>>n>>m && n){ init(); for(int i=0;i<m;i++){ int a,b,c,d; scanf("%d%d%d%d",&a,&b,&c,&d); a<<=1,b<<=1; a+=c;b+=d; add(a,b^1),add(b,a^1); } for(int i=0;i<2*n;i++) if(!dfn[i])tarjan(i); int flag=0; for(int i=0;i<n;i++) if(id[i*2]==id[i*2+1]){ puts("NO"); flag=1; break; } if(!flag)puts("YES"); } }
原文地址:https://www.cnblogs.com/zsben991126/p/10871901.html
- 软件测试金字塔
- Selenium2+python自动化59-数据驱动(ddt)
- 浅谈我对动态规划的一点理解---大家准备好小板凳,我要开始吹牛皮了~~~
- Selenium2+python自动化60-异常后截图(screenshot)
- Cisco Packet Tracer 6.0 实验笔记
- kali 2018.1安装教程
- python接口自动化2-发送post请求
- TypeScript 动态创建类
- Java学习笔记【持续更新】
- 互联网协议入门(二)
- 设计模式六大原则(4):接口隔离原则
- 设计模式六大原则(3):依赖倒置原则
- 闲的无聊时候就手动写第一个漏洞扫描工具吧!
- 模拟退火算法从原理到实战【基础篇】
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- Zerotier网卡NAT via iptables By HKL,
- Github Pages同步到Qcloud腾讯云对象存储COS By HKL,
- 独家 | 探索性文本数据分析的新手教程(Amazon案例研究)
- OpenWRT通过3G Modem加asterisk将GSM通话转为SIP By HKL,
- Coding通过Jenkins生成jekyll并发布到腾讯云对象存储Qcloud COS By HKL,
- mybatis 实用技巧:<trim prefix="where" prefixOverrides="and|or">
- OpenWRT配置Webdav(s)共享文件 By HKL,
- OpenWRT配置Apache Webdav By HKL,
- 我向面试官讲解了单例模式,他对我竖起了大拇指
- 47 张图带你 MySQL 进阶!!!
- 新特性解读 | InnoDB-Cluster 扫盲-日常运维
- Laravel 框架实现无限极分类
- 这样设置IDEA,让你爽到飞起!
- 这些年,我写过的BUG(一)
- Selenium处理下拉列表