fork download
  1. #include <iostream>
  2. using namespace std;
  3. int main() {
  4. int t1,t2,i=0,j=0,n=0,k=0,num=0,temp=0,v,l,p;
  5. bool lists[65][10001]={{false}};
  6. int arr[7][10002];
  7. bool inc[100]={false},exc[100]={false};
  8. int view[10001];
  9. cin>>n;
  10. cin>>v;
  11. for(i=0;i<v;++i)
  12. {
  13. cin>>view[i];
  14. //view[k]=true;
  15. }
  16. cin>>l;
  17. for(i=0;i<l;++i)
  18. {
  19. cin>>arr[i][0];
  20. for(j=1;j<=arr[i][0];++j)
  21. {
  22. cin>>arr[i][j];
  23. }
  24. }
  25. num=1<<l;
  26. for(i=0;i<num;++i)
  27. {
  28. temp=i;
  29. k=0;
  30. while(temp>0)
  31. {
  32. if(temp&1)
  33. {
  34. for(j=1;j<=arr[k][0];++j)
  35. {
  36. lists[i][arr[k][j]]=true;
  37. }
  38. }
  39. ++k;
  40. temp=temp>>1;
  41. }
  42. for(j=0;j<v;++j)
  43. {
  44. if(lists[i][view[j]]==false)
  45. break;
  46. }
  47. if(j<v)
  48. {
  49. inc[i]=false;
  50. }
  51. else
  52. {
  53. inc[i]=true;
  54. }
  55. for(j=0;j<v;++j)
  56. {
  57. if(lists[i][view[j]]==true)
  58. break;
  59. }
  60. if(j<v)
  61. {
  62. exc[i]=false;
  63. }
  64. else
  65. {
  66. exc[i]=true;
  67. }
  68. }
  69. cin>>p;
  70. int ans=0,in,ex;
  71. for(i=0;i<p;++i)
  72. {
  73. cin>>in;
  74. if(in>0)
  75. {
  76. t1=0;
  77. for(j=0;j<in;++j)
  78. {
  79. cin>>num;
  80. t1+=1<<num;
  81. }
  82. }
  83. cin>>ex;
  84. if(ex>0)
  85. {
  86. t2=0;
  87. for(j=0;j<ex;++j)
  88. {
  89. cin>>num;
  90. t2+=1<<num;
  91. }
  92. }
  93. if(in>0 && ex==0)
  94. {
  95. if(inc[t1]==false)
  96. ++ans;
  97. }
  98. else if(in==0 && ex>0)
  99. {
  100. if(exc[t2]==false)
  101. ++ans;
  102. }
  103. else if(in>0 && ex>0)
  104. {
  105. if(inc[t1]==false || exc[t2]==false)
  106. ++ans;
  107. }
  108. }
  109. cout<<ans;
  110. return 0;
  111. }
  112.  
Success #stdin #stdout 0s 4172KB
stdin
10
8 1 2 5 6 0 9 8 7
4
2 4 3
2 7 6
3 0 1 5
3 2 8 9
4
0
1 0
1 1
0
0
0
3 1 2 3
0
stdout
1