Advertisement
Guest User

Untitled

a guest
Feb 7th, 2016
57
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.76 KB | None | 0 0
  1. #include <cstdio>
  2. #include <bitset>
  3. using namespace std;
  4.  
  5. const int INF = 0x3f3f3f3f;
  6.  
  7. bitset<32> dir[30];
  8.  
  9. int main() {
  10.   int t, m, d, c, key;
  11.   scanf("%d", &t);
  12.  
  13.   for (int i = 0; i < t; ++i) {
  14.     scanf("%d %d", &m, &d);
  15.  
  16.     for (int j = 0; j < d; ++j) {
  17.       dir[j] = bitset<32>();
  18.       scanf("%d", &c);
  19.       for (int k = 0; k < c; ++k)
  20.         scanf("%d", &key), dir[j].set(key);
  21.     }
  22.  
  23.     int mindirs = INF;
  24.     for (int j = 0; j < (1<<d); ++j) {
  25.       bitset<20> s(j);
  26.       bitset<32> keys;
  27.       for (int k = 0; k < 32; ++k) if (s[k]) keys |= dir[k];
  28.       if (keys.count() >= m) mindirs = min(mindirs, (int)s.count());
  29.     }
  30.  
  31.     if (mindirs < 100) printf("%d\n", mindirs);
  32.     else printf("Desastre!\n");
  33.   }
  34.  
  35.   return 0;
  36. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement