General
 
 
# Author Problem Lang Verdict Time Memory Sent Judged  
187667842 Practice:
DaiRuiChen007
1605D - 48 C++14 (GCC 6-32) Accepted 202 ms 10312 KB 2023-01-03 03:56:59 2023-01-03 03:56:59
→ Source
// LUOGU_RID: 98549891
#include<bits/stdc++.h>
using namespace std;
const int MAXN=2e5+1;
vector <int> G[MAXN],ver[2];
int ans[MAXN];
bool vis[MAXN];
inline void dfs(int p,int f,int c) {
	ver[c].push_back(p);
	for(int v:G[p]) if(v!=f) dfs(v,p,c^1);
}
inline int bit(int x) { return 1<<x; }
inline void solve() {
	int n;
	scanf("%d",&n);
	for(int i=1;i<=n;++i) ans[i]=0,vis[i]=false,G[i].clear();
	for(int i=1;i<n;++i) {
		int u,v;
		scanf("%d%d",&u,&v);
		G[u].push_back(v);
		G[v].push_back(u);
	}
	ver[0].clear(),ver[1].clear();
	dfs(1,0,0);
	int k=__lg(n);
	if(ver[0].size()>ver[1].size()) swap(ver[0],ver[1]);
	for(int i=k-1;i>=0;--i) {
		if((int)ver[0].size()<bit(i)) continue;
		for(int j=bit(i);j<bit(i+1);++j) {
			vis[j]=true;
			ans[ver[0].back()]=j;
			ver[0].pop_back();
		}
	}
	for(int i=1;i<=n;++i) {
		if(!vis[i]) {
			ans[ver[1].back()]=i;
			ver[1].pop_back();
		}
	}
	for(int i=1;i<=n;++i) printf("%d ",ans[i]);
	puts("");
}
signed main() {
	int T;
	scanf("%d",&T);
	while(T--) solve();
	return 0;
}
?
Time: ? ms, memory: ? KB
Verdict: ?
Input
?
Participant's output
?
Jury's answer
?
Checker comment
?
Diagnostics
?
Click to see test details