이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
ll menor,N,M,mascaras[30],alvo,menormask;
void brute(int atual,ll bitmask,int qtd,ll outramask){
	if(atual == M){
		if(bitmask != alvo) return;
		if(qtd < menor){
			menor = qtd;
			menormask = outramask;
		}
		else if(qtd == menor){
			menormask = min(menormask,outramask);
		}
		return;
	}
	brute(atual+1, bitmask,qtd, outramask );
	brute(atual+1, bitmask ^ mascaras[atual], qtd+1, outramask | (1LL << atual) );
}
int main(){
	cin >> N >> M;
	menor = 2*M;
	alvo = (1LL << N) - 1;
	for(ll i = 0;i<M;i++){
		ll x;
		cin >> x;
		while(x--){
			ll y;
			cin >> y;
			y--;
			mascaras[i] |= (1LL << y);
		}
	}
	brute(0,0,0,0);
	cout << menor << endl;
	for(ll i = 0;i<M;i++){
		if(menormask & (1LL << i)){
			cout << i + 1 << " ";
		}
	}
	cout << endl;
	return 0;
}
| # | 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... |