luogu 4782【模板】 2-SAT 问题
2024-08-27 05:12:25
2-SAT就是给出$m$个限制表示$x==val_x || y==val_y$
求出满足的解
每个点拆成两个点,如果$x$不满足则$y$一定满足,$y$不满足同理。这样我们连边,然后$tarjan$即可
#include<iostream>
#include<cstdio>
#include<cstring>
#include<cstdlib>
#include<cmath>
#include<algorithm>
#include<queue>
#include<vector>
#include<map>
#include<set>
#define ll long long
#define db double
#define inf 2139062143
#define MAXN 2001000
#define rep(i,s,t) for(register int i=(s),i##__end=(t);i<=i##__end;++i)
#define dwn(i,s,t) for(register int i=(s),i##__end=(t);i>=i##__end;--i)
#define ren for(register int i=fst[x];i;i=nxt[i])
#define pb(i,x) vec[i].push_back(x)
#define pls(a,b) (a+b)%MOD
#define mns(a,b) (a-b+MOD)%MOD
#define mul(a,b) (1LL*(a)*(b))%MOD
using namespace std;
inline int read()
{
int x=,f=;char ch=getchar();
while(!isdigit(ch)) {if(ch=='-') f=-;ch=getchar();}
while(isdigit(ch)) {x=x*+ch-'';ch=getchar();}
return x*f;
}
int n,m,nxt[MAXN<<],fst[MAXN],to[MAXN<<],cnt;
int dfn[MAXN],low[MAXN],bl[MAXN],stp,st[MAXN],top,scc;
void add(int u,int v) {nxt[++cnt]=fst[u],fst[u]=cnt,to[cnt]=v;}
void tarjan(int x)
{
st[++top]=x,dfn[x]=low[x]=++stp;
ren if(!dfn[to[i]]) {tarjan(to[i]);low[x]=min(low[x],low[to[i]]);}
else if(!bl[to[i]]) low[x]=min(low[x],dfn[to[i]]);
if(low[x]==dfn[x])
{scc++;int now=;while(now!=x) now=st[top--],bl[now]=scc;}
}
int main()
{
n=read(),m=read();int a,b,x,y;rep(i,,m)
a=read(),x=read(),b=read(),y=read(),
add(a+(^x)*n,b+y*n),add(b+(^y)*n,a+x*n);
rep(i,,n<<) if(!dfn[i]) tarjan(i);
rep(i,,n) if(bl[i]==bl[i+n]) return puts("IMPOSSIBLE"),;puts("POSSIBLE");
rep(i,,n) printf("%d ",bl[i]>bl[i+n]);
}
最新文章
- Tomcat如何添加管理员
- Java查询网址
- C# mongodb [下]
- 批量下载QQ空间日志
- 【原】Redis入门教程
- Asp.net Mvc 第一回 安装,并使ASP.NET MVC页面运行起来
- 经常会用到的js函数
- 基于visual Studio2013解决C语言竞赛题之0514单词统计
- APK扩展文件介绍、功能及用法
- Android 实现用户列表信息的功能,然后选择删除幻灯片删除功能
- decompile elf
- 【JDK1.8】JDK1.8集合源码阅读——TreeMap(一)
- SpringCloud学习之feign
- win7系统标准用户恢复administrator账号方法
- 注解方式过滤器(Filter)不能过滤Servlet的问题
- idea tomcat上传图片,无法显示的问题解决
- NTLM
- rxjs学习
- 普通spring jsp+mybatis项目修改为springboot + jsp +mybatis项目
- Linux下which命令使用详解(转)