Copy
Full
#include <bits/stdc++.h>
#define rep(i,n) for(int i=0;i<(n);i++)
using namespace std;
int k[15];
int s[15][15];
bool p[15];
bool cs[15];
int main(void){
cin.tie(0);
ios::sync_with_stdio(false);
int N,M;
cin >> N >> M;
rep(i,M){
cin >> k[i];
rep(j,k[i])cin >> s[i][j];
}
rep(i,M)cin >> p[i];
int ans = 0;
//各スイッチをon off 2^N通り試す
for(int i=0;i<(1<<N);i++){
for(int j=0;j<N;j++){
if((i>>j)&1)cs[j] = 1;//スイッチのj番目はon
else cs[j] = 0;//スイッチのj番目はoff
}
int tmp = 0;
for(int j=0;j<M;j++){ //各電球について
int cnt = 0;
for(int a=0;a<k[j];a++){
if(cs[s[j][a]-1])cnt++;
}
if(cnt%p[j])tmp++;
}
if(tmp==M)ans++;
}
cout << ans << endl;
}