amcbn

Dineu

Nov 9th, 2021
491
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.34 KB | None | 0 0
  1. /* [A][M][C][B][N] / [K][R][I][P][6][8] */
  2. #include <bits/stdc++.h>
  3. #include <unordered_map>
  4. using namespace std;
  5. typedef long long ll;
  6. const char sp = ' ', nl = '\n';
  7. const int MOD = 9973;
  8. ifstream fin("dineu.in");
  9. ofstream fout("dineu.out");
  10. vector<bool> f;
  11. vector<int> v;
  12. bool FOUND = 0;
  13. void gensubmult(int idx) {
  14.     if (FOUND) return;
  15.     if (idx == f.size()) {
  16.         int ok = 1;
  17.         for (int i = 0; i < f.size(); ++i)
  18.             if (f[i])
  19.                 for (int j = 0; j < f.size(); ++j)
  20.                     if (f[j])
  21.                         ok &= bool(v[i] & v[j]);
  22.         if (ok) {
  23.             FOUND = 1;
  24.             int ans = 0;
  25.             for (int i = 0; i < f.size(); ++i)
  26.                 ans += f[i];
  27.             fout << ans << nl;
  28.             for (int i = 0; i < f.size(); ++i)
  29.                 if (f[i])
  30.                     fout << i + 1 << sp;
  31.         }
  32.     }
  33.     else {
  34.         f[idx] = 1;
  35.         gensubmult(idx + 1);
  36.         f[idx] = 0;
  37.         gensubmult(idx + 1);
  38.     }
  39. }
  40.  
  41.  
  42. int main() {
  43.     ios::sync_with_stdio(0);
  44.     cin.tie(0), cout.tie(0);
  45.     int n, l;
  46.     fin >> n >> l;
  47.     v.resize(n), f.resize(n);
  48.     for (int i = 0; i < n; ++i) {
  49.         int k, x;
  50.         fin >> k;
  51.         while (k--) {
  52.             fin >> x;
  53.             v[i] += 1 << x;
  54.         }
  55.     }
  56.     gensubmult(0);
  57. }
Advertisement
Add Comment
Please, Sign In to add comment