C - Switches
bit全探索基礎問題。
N, M = map(int, input().split())
kslist = []
for i in range(M):
kslist.append(list(map(lambda x: int(x)-1, input().split()))[1:])
plist = list(map(int, input().split()))
ans = 0
for i in range(1 << N):
for r in range(M):
on_sum = 0
for j in range(N):
if i >> j & 1 and j in kslist[r]:
on_sum += 1
if on_sum % 2 != plist[r]:
break
else:
ans += 1
print(ans)
list(map(lambda x: int(x)-1, input().split()))[1:]
こういう書き方ができるようになったのもポイント。