제출 #1282661

#제출 시각아이디문제언어결과실행 시간메모리
1282661stefanneaguHiperkocka (COCI21_hiperkocka)C++20
0 / 110
1 ms336 KiB
#include <bits/stdc++.h>
#define int long long

using namespace std;

const int nmax = 1e5 + 1;

int grad[nmax];
bool f[nmax];

int32_t main() {
    int n;
    cin >> n;
    for (int i = 1; i <= n; i++) {
        int a, b;
        cin >> a >> b;
        grad[a]++, grad[b]++;
    }
    vector<int> lf;
    int root = -1;
    for (int i = 0; i <= n; i++) {
        if (grad[i] == 1) {
            lf.push_back(i);
        } else {
            assert(grad[i] == n);
            root = i;
        }
    }
    if (lf.size() == n + 1) {
        assert(n == 1);
        root = 1;
        lf.pop_back();
    }
    cout << (1 << (n - 1)) << '\n';
    for (int i = 0; i < (1 << n); i++) {
        if (!f[i]) {
            f[i] = 1;
            vector<int> ord(n + 1);
            ord[root] = i;
            for (int bit = 0; bit < n; bit++) {
                // sa ramana doar bit ul bit
                int xr = (i ^ (1 << bit));
                ord[lf[bit]] = xr;
                f[xr] = 1;
            }
            for (auto it : ord) {
                cout << it << " ";
            }
            cout << '\n';
        }
    }
    return 0;
}
#Verdict Execution timeMemoryGrader output
Fetching results...