結果
| 問題 |
No.2435 Order All Company
|
| コンテスト | |
| ユーザー |
|
| 提出日時 | 2023-08-18 22:00:38 |
| 言語 | PyPy3 (7.3.15) |
| 結果 |
AC
|
| 実行時間 | 284 ms / 2,000 ms |
| コード長 | 1,384 bytes |
| コンパイル時間 | 172 ms |
| コンパイル使用メモリ | 82,536 KB |
| 実行使用メモリ | 87,792 KB |
| 最終ジャッジ日時 | 2024-11-28 07:04:22 |
| 合計ジャッジ時間 | 6,846 ms |
|
ジャッジサーバーID (参考情報) |
judge1 / judge2 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| other | AC * 36 |
ソースコード
import sys, time, random
from collections import deque, Counter, defaultdict
input = lambda: sys.stdin.readline().rstrip()
ii = lambda: int(input())
mi = lambda: map(int, input().split())
li = lambda: list(mi())
inf = 2 ** 63 - 1
mod = 998244353
def det(n, a, mod):
ret = 1
for i in range(n):
if a[i][i] == 0:
for j in range(i + 1, n):
if a[j][i]:
break
else:
return 0
a[j], a[i] = a[i], a[j]
ret *= -1
ret %= mod
for j in range(n):
if i < j:
buf = a[j][i] * (pow(a[i][i], mod - 2, mod))
buf %= mod
for k in range(n):
a[j][k] -= a[i][k] * buf
a[j][k] %= mod
for i in range(n):
ret *= a[i][i]
ret %= mod
return ret
n, k = mi()
E = []
for _ in range(k):
t = ii()
E.append([li() for _ in range(t)])
ans = 0
for bit in range(1 << k):
A = [[0] * n for _ in range(n)]
cnt = 0
for i in range(k):
if 1 & (bit >> i):
cnt += 1
for a, b in E[i]:
A[a - 1][b - 1] -= 1
A[b - 1][a - 1] -= 1
A[a - 1][a - 1] += 1
A[b - 1][b - 1] += 1
p = det(n - 1, A, mod)
ans += pow(-1, k - cnt) * p
ans %= mod
print(ans)