two-sat模板

P4782 【模板】2-SAT 问题

就是给关系进行连边,然后判断是否存在矛盾
输出方案的时候,就是在拓扑图上沿着反边走,但实际上tarjan求强连通分量已经排好序了
编号小的scc就是在拓扑序中排在后面的强连通分量

#include<cstdio>
#include<algorithm>
#include<cstring>
#include<cmath>
#include<queue>
#define fo(i,a,b) for (ll (i)=(a);(i)<=(b);(i)++)
#define fd(i,b,a) for (int (i)=(b);(i)>=(a);(i)--)
#define mk(x,y) make_pair((x),(y))

using namespace std;
typedef double db;
typedef long long ll;
const int N =1e6+6;
int tot,head[N*2],nex[N*2],to[N*2];
int low[N*2],dfn[N*2],st[N*2],top,cnt,now,scc[N*2];
int n,m,x,y,a,b;
void add(int x,int y){
	to[++tot]=y; nex[tot]=head[x]; head[x]=tot;
}
void dfs(int x){
	st[top++]=x;
	dfn[x]=low[x]=++now;
	for (int i=head[x];i;i=nex[i]){
		int v=to[i];
		if (!dfn[v]){
			dfs(v);
			low[x]=min(low[x],low[v]);
		}
		else if (!scc[v]) low[x]=min(low[x],dfn[v]);
	}
	
	if (low[x]==dfn[x]){
		++cnt; int v;
		while (1){
			v=st[--top];
			scc[v]=cnt;
			if (x==v) break;
		}
	}
}
int main()
{
//	freopen("data.in","r",stdin);

	scanf("%d %d",&n,&m);
	fo(i,1,m){
		scanf("%d %d %d %d",&x,&a,&y,&b); 
		
		add(x+(1-a)*n, y+b*n);
		add(y+(1-b)*n, x+a*n);
	}
	
	fo(i,1,2*n) if (!dfn[i]) dfs(i);
	
	bool flag=1;
	fo(i,1,n) if (scc[i]==scc[i+n]) flag=0;
	if (!flag) puts("IMPOSSIBLE");
	else {
		puts("POSSIBLE");
		fo(i,1,n) printf("%d ",scc[i]>scc[i+n]);
	}
	
	return 0;
}

 

posted @   gan_coder  阅读(11)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具
  1. 1 青春コンプレックス 結束バンド
  2. 2 ギターと孤独と蒼い惑星 結束バンド
  3. 3 星座になれたら 結束バンド
  4. 4 恋のうた (feat. 由崎司) 鬼頭明里
  5. 5 月と星空 カノエラナ
  6. 6 Cagayake!GIRLS[5人Ver.] (TV size Ver.) 桜高軽音部
  7. 7 不可思議のカルテ 不可思議のカルテ
  8. 8 優しさの理由 ChouCho
不可思議のカルテ - 不可思議のカルテ
00:00 / 00:00
An audio error has occurred, player will skip forward in 2 seconds.

作词 : 児玉雨子

作曲 : カワイ ヒデヒロ

编曲 : カワイ ヒデヒロ

编曲:カワイヒデヒロ(fox capture plan)

語れない眠れないトロイメライ

語れない眠れないトロイメライ

語れない眠れないトロイメライ

如鲠在喉 夜不能寐 如梦如幻

あなたの見てる正体

你所看到的真实

誰も読めないカルテ

这谁都读不懂的病历啊

不可思議知りたいだけ

真是不可思议啊 只是想要去了解罢了

嘘も現実も

嘘も現実も

嘘も現実も

谎言也好 现实也罢

どっちも真実だったの本当よ

都是难以置信的真实

今日もひとりごと

今天也是一个人

なんにも無理をしないで

做什么都勉强着自己

わたし愛されたい

我想要被爱啊!

有耶無耶さよなら軽い眩暈

有耶無耶さよなら軽い眩暈

有耶無耶さよなら軽い眩暈

棱模两可 转瞬即逝 头晕目眩

あなたのいない現象界

在你不存在的现象界

誰も読めないカルテ

这谁都读不懂的病历啊

自意識溢れ出して

果然是自我意识过剩么

鼓動世界像

鼓動世界像

鼓動世界像

心动不已 这世界之形

いつも噛み合わないの痛くて

总是咬着不放

毎夜ねがいごと

每晚总是因抓不住而痛苦万分

なんにも疑わないで

什么都不想怀疑了

混ざり融(と)け合いたい

感情相互混杂着

たわいない判らない理由存在

たわいない判らない理由存在

たわいない判らない理由存在

毫不可怖 未曾知晓 理由? 存在?

あなたと残す後悔

与你一起残存的后悔之情

誰も読めないカルテ

这谁都读不懂的病历啊

不愉快繰り返して

回过头看 真是令人不愉快呢

正しい夢は

正しい夢は

正しい夢は

那正确的梦想是什么?

かなしい声は

这悲戚的声响又是为了什么?

美しい?

是觉得绚丽么?

疑わしい?

还是疑惑?

羨ましい?

又或是感到羡慕?

ねえ、どれ?

呐,究竟是怎样呢

語れない眠れないトロイメライ

語れない眠れないトロイメライ

語れない眠れないトロイメライ

如鲠在喉 夜不能寐 如梦如幻

あなたの見てる正体

你所看到的真实

誰も読めないカルテ

这谁都读不懂的病历啊

不可思議知りたいだけ

真是不可思议 只是想要去知晓

終わらないことはないトロイメライ

終わらないことはないトロイメライ

終わらないことはないトロイメライ

残灯末庙 更仆未罄 如梦如幻

あなたと跨ぐ境界

与你一起跨越世界

誰も読めないカルテ

这谁都读不懂的病历啊

思春期疵口(きずぐち)胸のうち

思春期在胸口的伤痕

不可思議知りたいだけ真是不可思议啊 只是想要去了解罢了

点击右上角即可分享
微信分享提示