// 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 time | Memory | Grader output |
---|
Fetching results... |