cf里面wrong on test 2,求助qwq
查看原帖
cf里面wrong on test 2,求助qwq
1227031
ARTI001楼主2024/12/24 20:57
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;

int t,n,a,b,arr[200005],cur;
bool vis[200005];
vector<int> son[200005];
void clearrr()
{
	for(int i=1;i<=n;i++)
	{
		son[i].clear();
	}
	memset(vis,0,sizeof(vis));
	cur=1;
}

void search(int fa)
{
	int len=son[fa].size();
	int num=0;
	for(int i=0;i<len;i++)
	{
		if(vis[son[fa][i]]==1)continue;
		vis[son[fa][i]]=1;
		if(num==0)
		{
			cur++;
			arr[son[fa][i]]=cur;
		}
		else if(num==1)
		{
			cur=cur-abs((arr[fa]-cur)%2)+2;
			cur=max(cur,arr[fa]+4);
			arr[son[fa][i]]=cur;
		}
		else
		{
			cur+=2;
			arr[son[fa][i]]=cur;
		}
		num++;
		//cout<<son[fa][i]<<" "<<cur<<" "<<i<<endl;
		search(son[fa][i]);
	}
}

int main()
{
	ios::sync_with_stdio(false),cin.tie(0),cout.tie(0);
	cin>>t;
	while(t--)
	{
		clearrr();
		cin>>n;
		for(int i=1;i<n;i++)
		{
			cin>>a>>b;
			son[a].push_back(b);
			son[b].push_back(a);
		}
		vis[1]=1;arr[1]=1;
		search(1);
		for(int i=1;i<=n;i++)
		{
			cout<<arr[i]<<" ";
		}
		cout<<endl;
	}
	return 0;
}
2024/12/24 20:57
加载中...