HDU-3006The Number of set

来源:互联网 发布:淘宝刷单平台推荐 编辑:程序博客网 时间:2024/05/21 18:32
#include<iostream>#include<list>#include<queue>#define N 105int n,m;unsigned short ar[N];int n_set;int tmp;unsigned short set[10000000];unsigned short set_;int idx;int idx_n;void creat_set(int dep){if(dep>=n){set[idx++]=set_;return;}creat_set(dep+1);set_|=ar[dep];creat_set(dep+1);set_^=ar[dep];}int main(){while (std::cin>>n>>m){for(int i=0;i!=n;i++){std::cin>>n_set;for(int j=0;j!=n_set;j++){std::cin>>tmp;ar[i]=(ar[i])|(1<<(8-tmp+1));}}creat_set(0);std::sort(set,set+idx);idx_n=1;for(int i=2;i!=idx;i++){if(set[i]!=set[i-1]){idx_n++;}}std::cout<<idx_n<<std::endl;memset(ar,0,sizeof(ar));memset(set,0,sizeof(set));idx=idx_n=0;}}