Submission #1319106

#TimeUsernameProblemLanguageResultExecution timeMemory
1319106muhammad-ahmadNorela (info1cup18_norela)C++20
100 / 100
779 ms444 KiB
// #include <bits/stdc++.h>
#include <iostream>
#include <cmath>
#include <algorithm>
#include <map>
#include <vector>
#include <iomanip>
#include <string>
#include <queue>
#include <set>
#include <deque>
#include <numeric>
#include <stack>
#include <chrono>
#include <ext/pb_ds/assoc_container.hpp>
#include <ext/pb_ds/tree_policy.hpp>

using namespace std;
using namespace __gnu_pbds;

void fast_io() {
	// freopen("", "r", stdin);
	// freopen("", "w", stdout);
	ios::sync_with_stdio(0);
	cin.tie();
	cout.tie();
	cout << setprecision(9);
}

#define int long long
#define endl '\n'
#define all(v) (v).begin(), (v).end()
#define rall(v) (v).rbegin(), (v).rend()
#define fi first
#define se second
#define ordered_set tree<int, null_type,less<int>, rb_tree_tag,tree_order_statistics_node_update>

void solve() {
	int n, m; cin >> n >> m;
	int a[m] = {};
	for (int i = 0; i < m; i++){
		int s; cin >> s;
		while (s--){
			int x; cin >> x;
			x--;
			a[i] += (1ll << x);
		}
	}
	
	int ans = (1ll << (m + 1)) - 1, y = 80;
	for (int P = m - 1; P >= 0; P--){
		int i = (1ll << (P));
		int K = (1ll << (P + 1));
		while (i < K){
			int cur = 0;
			for (int j = m - 1; j >= 0; j--){
				if (((i >> j) & 1)){
					cur ^= a[(m - 1) - (j)];
				}
			}
			if (cur == ((1ll << n) - 1)){
				int x = __builtin_popcount(i);
				if (x < y) {ans = i; y = x;}
				else if (x == y) ans = max(ans, i);
			}
			i++;
		}
	}
	cout << y << endl;
	for (int j = m - 1; j >= 0; j--){
		if (((ans >> j) & 1)){
			cout << (m - 1) - (j) + 1 << ' ';
		}
	}
	cout << endl;
	
	
}

signed main() {
	fast_io();
	srand(chrono::steady_clock::now().time_since_epoch().count());
	int tc = 1;
	// cin >> tc;
	while (tc--) solve();
	return 0;
}


#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...