Submission #1270795

#TimeUsernameProblemLanguageResultExecution timeMemory
1270795algoproclubHiperkocka (COCI21_hiperkocka)C++20
110 / 110
34 ms3656 KiB
// 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 timeMemoryGrader output
Fetching results...