結果
| 問題 |
No.2293 無向辺 2-SAT
|
| コンテスト | |
| ユーザー |
|
| 提出日時 | 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 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 3 |
| other | AC * 19 TLE * 24 MLE * 10 |
ソースコード
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)