結果
問題 |
No.2236 Lights Out On Simple Graph
|
ユーザー |
|
提出日時 | 2023-03-04 18:17:57 |
言語 | PyPy3 (7.3.15) |
結果 |
AC
|
実行時間 | 939 ms / 4,000 ms |
コード長 | 805 bytes |
コンパイル時間 | 152 ms |
コンパイル使用メモリ | 82,208 KB |
実行使用メモリ | 169,688 KB |
最終ジャッジ日時 | 2024-09-18 01:20:56 |
合計ジャッジ時間 | 29,746 ms |
ジャッジサーバーID (参考情報) |
judge4 / judge3 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | AC * 57 |
ソースコード
N,M = map(int,input().split()) edge = [] for _ in range(M): a,b = map(int,input().split()) a -= 1 b -= 1 edge.append((1 << a) | (1 << b)) c = list(map(int,input().split())) C = 0 for i in range(N): if c[i] == 1: C |= 1 << i import sys D = M // 2 E = M - D d = dict() for bit in range(1 << D): count = 0 tmp = 0 for i in range(D): if bit >> i & 1: count += 1 tmp ^= edge[i] if tmp in d: d[tmp] = min(d[tmp],count) else: d[tmp] = count ans = 50 for bit in range(1 << E): count = 0 tmp = 0 for i in range(E): if bit >> i & 1: count += 1 tmp ^= edge[D + i] if tmp ^ C in d: ans = min(ans,count + d[tmp ^ C]) if ans == 50: print(-1) else: print(ans)