QOJ.ac

QOJ

IDProblemSubmitterResultTimeMemoryLanguageFile sizeSubmit timeJudge time
#671418#997. 2-SAT 问题dieselhuangWA 13ms8696kbC++141.2kb2024-10-24 12:20:002024-10-24 12:20:01

Judging History

This is the latest submission verdict.

  • [2024-10-24 12:20:01]
  • Judged
  • Verdict: WA
  • Time: 13ms
  • Memory: 8696kb
  • [2024-10-24 12:20:00]
  • Submitted

answer

#include <bits/stdc++.h>
using namespace std;
int n, m, tot = 0, dfx = 0, sct = 0, tp = 0, hd[200010], e[1000010][2], dfn[200010], low[200010], scc[200010], st[200010], a[200010];
bool bk[200010];
void add(int u,int v){e[++tot][0]=hd[u];e[tot][1]=v;hd[u]=tot;}
void dfs(int u){
	dfn[u] = low[u] = ++dfx; st[++tp] = u; bk[u] = true;
	int i, v;
	for(i = hd[u]; i > 0; i = e[i][0]){
		v = e[i][1];
		if(dfn[v] == 0){
			dfs(v);
			low[u] = min(low[u], low[v]);
		}else if(bk[v]) low[u] = min(low[u], dfn[v]);
	}
	if(low[u] >= dfn[u]){
		sct++;
		while(1){
			v = st[tp--];
			scc[v] = sct; bk[v] = false;
			if(v == u) break;
		}
	}
}
int main()
{
	int i, u, v, x, y;
	scanf("%d%d", &n, &m);
	for(i = 1; i <= n << 1; i++) hd[i] = 0, dfn[i] = 0, bk[i] = false;
	for(i = 1; i <= m; i++){
		scanf("%d%d%d%d", &u, &x, &v, &y);
		add(u + (x ? n : 0), v + (y ? 0 : n));
		add(v + (y ? n : 0), u + (x ? 0 : n));
	}
	for(i = 1; i <= n << 1; i++){
		if(dfn[u] == 0) dfs(u);
	}
	for(i = 1; i <= n; i++){
		if(scc[i] == scc[i + n]){ printf("No"); return 0; }
		a[i] = (scc[i] < scc[i + n] ? 1 : 0);
	}
	printf("Yes\n");
	for(i = 1; i <= n; i++) printf("%d ", a[i]);
	return 0;
}

Details

Tip: Click on the bar to expand more detailed information

Test #1:

score: 0
Wrong Answer
time: 13ms
memory: 8696kb

input:

86354 86418
14615 0 14903 1
13605 0 4458 0
15604 0 77112 0
52311 1 64996 0
22711 1 74245 1
39042 1 57372 1
2994 1 84183 1
80574 0 58791 1
27780 1 9336 1
61809 0 7216 0
71113 0 42287 1
20073 0 72448 0
73840 0 77048 0
28955 0 4165 0
16322 1 14075 1
43512 0 58600 1
45219 0 53858 0
14919 0 22576 0
16594...

output:

No

result:

wrong answer You didn't find a solution but jury did.