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:]こういう書き方ができるようになったのもポイント。