// UUID: 485b5e14-45b7-43b9-a48d-0f1f0cbde855
#include <bits/stdc++.h>
using namespace std;
int t = 0;
void dfs(int i, int last, vector<vector<int>> &e, vector<int> &ans) {
for (int j : e[i]) {
if (j == last) continue;
ans[j] = ans[i] ^ (1 << t);
t++;
dfs(j, i, e, ans);
}
}
int main() {
int n;
cin >> n;
vector<vector<int>> e(n + 1);
for (int i = 0; i < n; i++) {
int a, b;
cin >> a >> b;
e[a].push_back(b);
e[b].push_back(a);
}
vector<int> ans(n + 1);
dfs(0, -1, e, ans);
cout << (1 << n) / 2 << "\n";
for (int i = 0; i < (1 << n); i++) {
int cnt = 0;
for (int j = 0; j < n; j++) cnt += (i >> j) & 1;
if (cnt % 2) {
for (int j : ans) cout << (j ^ i) << " ";
cout << "\n";
}
}
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |