fork download
  1. #include<stdio.h>
  2. #include<stdlib.h>
  3. unsigned long long int pow(int a,unsigned long long int b)
  4. {int i=1;
  5. for(int j=0;j<b;j++)
  6. {
  7. i*=a;
  8. }
  9. return i;
  10. }
  11. int main(void){
  12. int parts,cost,temp,way=0,thetest=0;
  13. int data[32]={0};
  14. unsigned long long int tests=1,num,all;
  15. scanf("%lld %lld",&all,&num);
  16. for(unsigned long long int i=0;i<num;i++)
  17. {
  18. scanf("%d %d",&parts,&cost);
  19. for(int j=0;j<parts;j++)
  20. {
  21. scanf("%d",&temp);
  22. data[i]+=pow(2,temp-1);
  23.  
  24. }
  25. }
  26. for(;tests<pow(2,num);tests++)
  27. {
  28. thetest=0;
  29. unsigned long long temptest=tests;
  30. for(unsigned long long int i=0;i<num;i++)
  31. {
  32. if(temptest%2==1){thetest|=data[i];}
  33. temptest/=2;
  34. }
  35. if(thetest==(pow(2,all)-1)){way++;}
  36. }
  37. printf("%d",way);
  38. return 0;
  39. }
  40.  
  41.  
Success #stdin #stdout 0s 5412KB
stdin
4 4
1 0
1
2 0
3 4
3 0
1 2 3
4 0 
1 2 3 4
stdout
10