#include<bits/stdc++.h>
using namespace std;
using ll=long long;
ll c[26];
bool bolje(const bitset<25>a,const bitset<25>b){
int c1=a.count();
int c2=b.count();
if(c1>c2)return 0;
if(c1<c2)return 1;
for(int i=0;i<a.size();++i){
if(a[i]>b[i])return 1;
if(a[i]<b[i])return 0;
}
return 0;
}
signed main(){
ios::sync_with_stdio(0);
cin.tie(0);
int n,m;
cin>>n>>m;
for(int i=0,q,x;i<m;++i){
cin>>q;
while(q--){
cin>>x;
c[i]|=(1ll<<(x-1));
}
}
ll g=0;
for(int i=0;i<n;++i)g|=(1<<i);
bitset<25>ans,nw;
for(int j=0;j<m;++j)
ans[j]=1;
for(int msk=1;msk<(1<<m);++msk){
ll x=g;
for(int j=0;j<m;++j)
if(msk&(1<<j))x^=c[j];
if(x)continue;
nw=0;
for(int j=0;j<m;++j)
nw[j]=((msk&(1<<j))!=0);
if(bolje(nw,ans))ans=nw;
}
cout<<ans.count()<<'\n';
for(int i=0;i<m;++i)
if(ans[i])cout<<i+1<<' ';
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |