Submission #1270471

#TimeUsernameProblemLanguageResultExecution timeMemory
1270471algoproclubHiperkocka (COCI21_hiperkocka)C++20
110 / 110
30 ms3656 KiB
// UUID: 4ace28a8-60b4-4020-9807-4f21d9b16e72
#include <bits/stdc++.h>
using namespace std;

vector<vector<int>>T;
vector<bool>vis;
vector<int>tree;

void dfs(int x, int curr){
	vis[x]=true;tree[x]=curr;
	for(int y:T[x]){
		if(!vis[y]){
			if(curr&(1<<(y-1))){
				dfs(y,curr-(1<<(y-1)));
			}
			else{
				dfs(y,curr+(1<<(y-1)));
			}
		}
	}
}

int main() {
	int n;cin>>n;
	T.resize(n+1);vis.resize(n+1);tree.resize(n+1);
	for(int i=1;i<=n;i++){
		int u,v;cin>>u>>v;
		T[u].push_back(v);T[v].push_back(u);
	}
	cout<<(1<<(n-1))<<'\n';
	for(int i=0;i<1<<n;i++){
		if(__builtin_popcount(i)%2==0){
			fill(vis.begin(),vis.end(),false);
			fill(tree.begin(),tree.end(),0);
			dfs(0,i);
			for(int j=0;j<=n;j++)cout<<tree[j]<<' ';
			cout<<'\n';
		}
	}
}
#Verdict Execution timeMemoryGrader output
Fetching results...