Submission #1272197

#TimeUsernameProblemLanguageResultExecution timeMemory
1272197IBoryHiperkocka (COCI21_hiperkocka)C++20
110 / 110
34 ms27072 KiB
#include <bits/stdc++.h>
#define pii pair<int, int>
using namespace std;

const int MAX = 18;
vector<int> G[MAX], T[1 << MAX];
int S[MAX], U[MAX];

void DFS(int cur1, int prev, int cur2) {
	S[cur1] = cur2;
	for (int i = 0; i < G[cur1].size(); ++i) {
		int next1 = G[cur1][i];
		if (next1 == prev) continue;

		int j = 0;
		while (U[j]) j++;
		int next2 = T[cur2][j];
		U[j] = 1;
		DFS(next1, cur1, next2);
	}
}

int main() {
	ios::sync_with_stdio(0); cin.tie(0);
	int N;
	cin >> N;
	for (int i = 0; i < N; ++i) {
		int a, b;
		cin >> a >> b;
		G[a].push_back(b);
		G[b].push_back(a);
	}

	for (int i = 0; i < (1 << N); ++i) for (int k = 0; k < N; ++k) T[i].push_back(i ^ (1 << k));
	
	memset(S, -1, sizeof(S));
	DFS(0, 0, 0);

	int Z = 1 << (N - 1);
	cout << Z << '\n';
	for (int b = 0; b < (1 << N); ++b) {
		if (__builtin_popcount(b) & 1) continue;
		for (int i = 0; i <= N; ++i) cout << (S[i] ^ b) << ' ';
		cout << '\n';
	}

	return 0;
}
#Verdict Execution timeMemoryGrader output
Fetching results...