結果

問題 No.2293 無向辺 2-SAT
ユーザー t98slidert98slider
提出日時 2023-05-09 02:20:01
言語 PyPy3
(7.3.15)
結果
MLE  
実行時間 -
コード長 1,154 bytes
コンパイル時間 422 ms
コンパイル使用メモリ 82,692 KB
実行使用メモリ 528,204 KB
最終ジャッジ日時 2024-11-25 16:31:57
合計ジャッジ時間 164,686 ms
ジャッジサーバーID
(参考情報)
judge2 / judge4
このコードへのチャレンジ
(要ログイン)

テストケース

テストケース表示
入力 結果 実行時間
実行使用メモリ
testcase_00 AC 36 ms
60,608 KB
testcase_01 AC 60 ms
351,304 KB
testcase_02 AC 37 ms
59,944 KB
testcase_03 AC 513 ms
367,984 KB
testcase_04 MLE -
testcase_05 MLE -
testcase_06 TLE -
testcase_07 TLE -
testcase_08 TLE -
testcase_09 TLE -
testcase_10 TLE -
testcase_11 AC 2,360 ms
275,436 KB
testcase_12 TLE -
testcase_13 AC 895 ms
116,440 KB
testcase_14 AC 446 ms
90,656 KB
testcase_15 AC 513 ms
90,804 KB
testcase_16 MLE -
testcase_17 AC 674 ms
266,444 KB
testcase_18 TLE -
testcase_19 AC 2,495 ms
272,968 KB
testcase_20 MLE -
testcase_21 TLE -
testcase_22 MLE -
testcase_23 AC 777 ms
276,652 KB
testcase_24 MLE -
testcase_25 AC 754 ms
269,464 KB
testcase_26 MLE -
testcase_27 MLE -
testcase_28 AC 936 ms
280,796 KB
testcase_29 MLE -
testcase_30 AC 838 ms
276,804 KB
testcase_31 MLE -
testcase_32 TLE -
testcase_33 TLE -
testcase_34 TLE -
testcase_35 TLE -
testcase_36 TLE -
testcase_37 TLE -
testcase_38 TLE -
testcase_39 TLE -
testcase_40 TLE -
testcase_41 TLE -
testcase_42 TLE -
testcase_43 TLE -
testcase_44 TLE -
testcase_45 TLE -
testcase_46 TLE -
testcase_47 TLE -
testcase_48 AC 3,699 ms
268,372 KB
testcase_49 AC 2,249 ms
268,692 KB
testcase_50 AC 1,442 ms
268,064 KB
testcase_51 AC 1,072 ms
268,480 KB
testcase_52 AC 873 ms
271,064 KB
testcase_53 AC 740 ms
262,368 KB
testcase_54 AC 761 ms
260,232 KB
testcase_55 AC 776 ms
501,340 KB
権限があれば一括ダウンロードができます

ソースコード

diff #

from sys import stdin
I = stdin.readline

J, R = int, range
X = I().split()
N, Q, P, p, w = J(X[0]), J(X[1]), 998244353, [], []

pow2 = [0] * (N + 1)
pow2[0] = 1
for i in range(N):
    pow2[i + 1] = pow2[i] + pow2[i]
    pow2[i + 1] %= 998244353 

def r(i):
	m = p[i]
	while i != m:
		p[i] = i = p[m]
		m = p[i]
	return i
n = 0
def g(i, j):
	global n
	i, j = r(i), r(j)
	if i != j:
		if w[i] == w[j] : w[j] += 1
		if w[i] < w[j] : p[i] = j
		else: p[j] = i
		n -= 1
U, V, W, T, L, f = [0] * N, [0] * N, [0] * N, [(0,)] * Q, 0, pow(2, N, P)
while Q:
	for l in R(L): V[W[l]] = 0
	M, L, s = 0, 0, 1
	while Q:
		Q, X = Q - 1, I().split()
		t = J(X[0])
		if t == 3:
			T[M], M = ((t,)), M + 1
			break
		else:
			u, v = J(X[1]) - 1, J(X[2]) - 1
			if V[u] == 0: U[u], V[u], W[L], L = L, 1, u, L+1
			if V[v] == 0: U[v], V[v], W[L], L = L, 1, v, L+1
			T[M], M = ((t,u,v)), M + 1
	n = N * 2
	p = [i for i in R(n)]
	w = [0] * n
	for l in T[:M]:
		if l[0] == 3: print(f)
		else:
			if s:
				u, v = U[l[1]], U[l[2]]
				t = u + L
				if l[0] == 1: g(u,v), g(t,v+L)
				else: g(t, v), g(u, v + L)
				if p[r(u)] == p[r(t)] : s=0
			print(pow2[n // 2] if s else 0)
0