File tree 1 file changed +42
-0
lines changed
1 file changed +42
-0
lines changed Original file line number Diff line number Diff line change
1
+ /*
2
+ LMiO 2017 Faktai
3
+ - Bitmask stuff
4
+ */
5
+
6
+ #include < bits/stdc++.h>
7
+ using namespace std ;
8
+
9
+ bitset<200 > bs[20 ];
10
+
11
+ int main () {
12
+ int n, m;
13
+ scanf (" %d %d" , &n, &m);
14
+ for (int i = 0 ; i < n; i++) {
15
+ int k;
16
+ scanf (" %d" , &k);
17
+ for (int j = 0 ; j < k; j++) {
18
+ int f;
19
+ scanf (" %d" , &f);
20
+ bs[f - 1 ][i] = 1 ;
21
+ }
22
+ }
23
+
24
+ int lb = n, ub = 0 ;
25
+ for (int mask = 0 ; mask < (1 << m); mask++) {
26
+ bitset<200 > cov;
27
+ bool good = true ;
28
+ for (int i = 0 ; i < m; i++) if (mask & (1 << i)) {
29
+ if ((cov & bs[i]).count ()) {
30
+ good = false ;
31
+ break ;
32
+ }
33
+ cov |= bs[i];
34
+ }
35
+ if (good && cov.count () == n) {
36
+ lb = min (lb, __builtin_popcount (mask));
37
+ ub = max (ub, __builtin_popcount (mask));
38
+ }
39
+ }
40
+ printf (" %d %d" , lb, ub);
41
+ return 0 ;
42
+ }
You can’t perform that action at this time.
0 commit comments