WA on #1 Too Short了,没看出来怎么回事
查看原帖
WA on #1 Too Short了,没看出来怎么回事
749325
Sincerin楼主2024/8/27 20:59
#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cstring>
#include<queue>
using namespace std;
#define int long long
#define ri register int
#define rd(n) n=read()
inline int read()
{
	register int res=0,f=0;
	register char c=getchar();
	while(c<'0'||c>'9'){f^=(c=='-');c=getchar();}
	while(c>='0'&&c<='9'){res=(res<<3)+(res<<1)+(c^48);c=getchar();}
	return f?-res:res;
}
void fprint(int n)
{
	if(n<0){putchar('-');n=-n;}
	if(n>9) fprint(n/10);
	putchar(n%10+48);
}
inline void print(int n)
{
	fprint(n);
	putchar(' ');
}
const int N=200005;
int t,n,m,k,x,y,z,ans,res,root,tot;
struct Graph{
	int head,ver,Next;
	#define ver(i) G[i].ver
	#define head(i) G[i].head
	#define Next(i) G[i].Next
}G[N];
int dep[N];
inline void add(int x,int y)
{
	ver(++tot)=y;
	Next(tot)=head(x);
	head(x)=tot;
} 
void dfs(int x,int fat)
{
	dep[x]=dep[fat]+1;
	for(ri i=head(x);i;i=Next(i))
	{
		ri y=ver(i);
		if(y!=fat) dfs(y,x); 
	}
}
priority_queue<int,vector<int>,greater<int> >a,b;
signed main(void)
{
	rd(t);
	while(t--)
	{
		rd(n); 
		root=1; tot=0;
		memset(G,0,sizeof(G)); 
		for(ri i=1;i<n;++i)
		{
			rd(x); rd(y);
			add(x,y);
			add(y,x);
		} 
		dfs(root,0);
		for(ri i=1;i<=n;++i)
		{
			if(dep[i]&1) a.emplace(i);
			else b.emplace(i);
		}
		x=a.size(); y=b.size();
		if(n&1)
		{
			if(max(x,y)-min(x,y)!=1) puts("-1");
			else
			{
				if(x>y)
				{
					for(ri i=1;i<=n;++i) 
					{
						if(i&1) 
						{
							print(a.top());
							a.pop();
						}
						else
						{
							print(b.top());
							b.pop();
						}
					}
				}
				if(x<y)
				{
					for(ri i=1;i<=n;++i) 
					{
						if(i&1) 
						{
							print(b.top());
							b.pop();
						}
						else
						{
							print(a.top());
							a.pop();
						}
					}
				}
			}
		}
		else
		{
			if(x!=y) puts("-1");
			else
			{
				for(ri i=1;i<=n;++i) 
				{
					if(i&1) 
					{
						print(a.top());
						a.pop();
					}
					else
					{
						print(b.top());
						b.pop();
					}
				}
			}
		}
		puts("");
		while(a.size()) a.pop();
		while(b.size()) b.pop();
	}
	return 0;
}
2024/8/27 20:59
加载中...