codeforces Educational Codeforces Round 78 (Rated for Div. 2) E - Tests for problem D(dfs+构造)

在这里插入图片描述
在这里插入图片描述
题意:问题D的反问题。。。

#include<bits/stdc++.h> 
using namespace std;
const int maxn=5e5+5;
int n,u,v,Right=1,ans[maxn][2];
vector<int>g[maxn];
void dfs(int x,int fa,int left)
{
	int num=(x==1)?g[x].size():g[x].size()-1;
	Right+=num+1;
	int l=Right;
	ans[x][0]=left;ans[x][1]=Right;
	for(int to:g[x])
	{
		if(to==fa) continue;
		dfs(to,x,--l);//--l的意思是给同一层的兄弟节点从右往左依次给位置 
	}
}
int main()
{
	scanf("%d",&n);
	for(int i=1;i<n;++i) scanf("%d %d",&u,&v),g[u].push_back(v),g[v].push_back(u);
	dfs(1,-1,1);
	for(int i=1;i<=n;++i) printf("%d %d\n",ans[i][0],ans[i][1]); 
}
发布了39 篇原创文章 · 获赞 0 · 访问量 1085

猜你喜欢

转载自blog.csdn.net/qq_42479630/article/details/103979670