結果
| 問題 |
No.2134 $\sigma$-algebra over Finite Set
|
| コンテスト | |
| ユーザー |
だれ
|
| 提出日時 | 2022-11-06 20:24:41 |
| 言語 | PyPy3 (7.3.15) |
| 結果 |
RE
|
| 実行時間 | - |
| コード長 | 1,087 bytes |
| コンパイル時間 | 171 ms |
| コンパイル使用メモリ | 82,316 KB |
| 実行使用メモリ | 85,012 KB |
| 最終ジャッジ日時 | 2024-09-24 07:25:48 |
| 合計ジャッジ時間 | 4,252 ms |
|
ジャッジサーバーID (参考情報) |
judge4 / judge5 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 2 |
| other | AC * 15 RE * 2 |
ソースコード
class UnionFind:
def __init__(self, _n):
self.v = [-1] * _n
self.n = _n
def find(self, x):
if self.v[x] < 0:
return x
self.v[x] = self.find(self.v[x])
return self.v[x]
def merge(self, a, b):
a = self.find(a)
b = self.find(b)
if a == b:
return
if self.v[a] > self.v[b]:
a, b = b, a
self.v[a] += self.v[b]
self.v[b] = a
def size(self):
res = 0
for i in range(self.n):
if self.v[i] < 0:
res += 1
return res
n, m = map(int, input().split())
B = [(2 ** n - 1)] * n
A, A_c = [0] * n, [0] * n
for i in range(m):
l, *a = map(int, input().split())
for j in range(l):
A[i] |= 1 << (a[j] - 1)
A_c[i] = ~A[i]
for j in range(n):
if (A[i] >> j) & 1:
B[j] &= A[i]
else:
B[j] &= A_c[i]
uf = UnionFind(n)
for i in range(n):
for j in range(n):
if B[i] == B[j]:
uf.merge(i, j)
print(pow(2, uf.size(), 998244353))
だれ