結果
問題 | No.2236 Lights Out On Simple Graph |
ユーザー | 👑 Kazun |
提出日時 | 2023-03-03 22:02:16 |
言語 | PyPy3 (7.3.15) |
結果 |
AC
|
実行時間 | 2,053 ms / 4,000 ms |
コード長 | 845 bytes |
コンパイル時間 | 133 ms |
コンパイル使用メモリ | 82,300 KB |
実行使用メモリ | 284,132 KB |
最終ジャッジ日時 | 2024-09-17 22:59:52 |
合計ジャッジ時間 | 55,861 ms |
ジャッジサーバーID (参考情報) |
judge3 / judge5 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | AC * 57 |
ソースコード
def solve(): N,M=map(int,input().split()) a=[0]*M; b=[0]*M for j in range(M): a[j],b[j]=map(int,input().split()) a[j]-=1; b[j]-=1 c=list(map(int,input().split())) def bit(x,k): return (x>>k)&1 inf=10**9 def calc(F): X={} M=len(F) for S in range(1<<M): p=0 cnt=0 for k in range(M): if bit(S,k): p^=(1<<a[F[k]])^(1<<b[F[k]]) cnt+=1 if cnt<X.get(p,inf): X[p]=cnt return X P=calc(list(range(M//2))) Q=calc(list(range(M//2,M))) target=sum([1<<v for v in range(N) if c[v]==1]) ans=min(P[p]+Q.get(p^target,inf) for p in P) return ans if ans<inf else -1 #================================================== print(solve())