Submission #1319003

#TimeUsernameProblemLanguageResultExecution timeMemory
1319003muhammad-ahmadNorela (info1cup18_norela)C++20
0 / 100
0 ms332 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);
		}
	}
	
	vector<int> ans;
	for (int i = 0; i <= m; i++) ans.push_back(m);
	
	for (int i = 0; i < (1ll << m); i++){
		int cur = 0;
		vector<int> T;
		for (int j = 0; j < m; j++){
			if (((i >> j) & 1)){
				T.push_back(j);
				cur ^= a[j];
			}
		}
		if (cur == ((1ll << n) - 1)){
			swap(T, ans);
			break;
		}
	}
	cout << ans.size() << endl;
	for (auto i : ans) cout << i + 1 << ' ';
	cout << endl;
	// for (auto i : a) cout << i << ' ';
	// 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...