Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /* [A][M][C][B][N] / [K][R][I][P][6][8] */
- #include <bits/stdc++.h>
- #include <unordered_map>
- using namespace std;
- typedef long long ll;
- const char sp = ' ', nl = '\n';
- const int MOD = 9973;
- ifstream fin("dineu.in");
- ofstream fout("dineu.out");
- vector<bool> f;
- vector<int> v;
- bool FOUND = 0;
- void gensubmult(int idx) {
- if (FOUND) return;
- if (idx == f.size()) {
- int ok = 1;
- for (int i = 0; i < f.size(); ++i)
- if (f[i])
- for (int j = 0; j < f.size(); ++j)
- if (f[j])
- ok &= bool(v[i] & v[j]);
- if (ok) {
- FOUND = 1;
- int ans = 0;
- for (int i = 0; i < f.size(); ++i)
- ans += f[i];
- fout << ans << nl;
- for (int i = 0; i < f.size(); ++i)
- if (f[i])
- fout << i + 1 << sp;
- }
- }
- else {
- f[idx] = 1;
- gensubmult(idx + 1);
- f[idx] = 0;
- gensubmult(idx + 1);
- }
- }
- int main() {
- ios::sync_with_stdio(0);
- cin.tie(0), cout.tie(0);
- int n, l;
- fin >> n >> l;
- v.resize(n), f.resize(n);
- for (int i = 0; i < n; ++i) {
- int k, x;
- fin >> k;
- while (k--) {
- fin >> x;
- v[i] += 1 << x;
- }
- }
- gensubmult(0);
- }
Advertisement
Add Comment
Please, Sign In to add comment