Submission #95968

#TimeUsernameProblemLanguageResultExecution timeMemory
95968alextodoranNorela (info1cup18_norela)C++14
100 / 100
132 ms376 KiB
#include <bits/stdc++.h>

#define MM 26
#define ll long long

using namespace std;

int n, m;

ll spell[MM];

vector <int> ans;

vector <int> v;

int mi = -1;

void bk(int pos, ll mk)
{
    if(pos == m + 1)
    {
        if(mk == (1LL << n) - 1)
            if(v.size() <= mi || mi == -1)
            {
                mi = v.size();
                ans = v;
            }
        return;
    }
    bk(pos + 1, mk);
    v.push_back(pos);
    bk(pos + 1, mk ^ spell[pos]);
    v.pop_back();
}

int main()
{
    cin >> n >> m;
    for(int i = 1; i <= m; i++)
    {
        int l;
        cin >> l;
        for(int j = 1; j <= l; j++)
        {
            int e;
            cin >> e;
            spell[i] |= (1LL << (e - 1));
        }
    }
    bk(1, 0);
    cout << mi << "\n";
    for(auto i : ans)
        cout << i << " ";
    cout << "\n";
    return 0;
}

Compilation message (stderr)

norela.cpp: In function 'void bk(int, long long int)':
norela.cpp:23:25: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
             if(v.size() <= mi || mi == -1)
                ~~~~~~~~~^~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...