DFS,把和当前结点相连的点全都括在当前结点左右区间里,它们的左端点依次++,然后对这些结点进行DFS,优先对左端点更大的进行DFS,这样它右端点会先括起来,和它同层的结点(后DFS的那些)的区间会把它括起来,这样它们就不会相交了。

 #define HAVE_STRUCT_TIMESPEC
#include<bits/stdc++.h>
using namespace std;
int cnt=;
vector<int>v[];
int l[],r[];
void dfs(int x,int fa){
for(int i=;i<v[x].size();++i)
if(v[x][i]!=fa)
l[v[x][i]]=++cnt;
r[x]=++cnt;
for(int i=v[x].size()-;i>=;--i)
if(v[x][i]!=fa)
dfs(v[x][i],x);
}
int main(){
ios::sync_with_stdio(false);
cin.tie(NULL);
cout.tie(NULL);
int n;
cin>>n;
for(int i=;i<n;++i){
int x,y;
cin>>x>>y;
v[x].push_back(y);
v[y].push_back(x);
}
dfs(,);
l[]=;
for(int i=;i<=n;++i)
cout<<l[i]<<" "<<r[i]<<"\n";
return ;
}

最新文章

  1. BZOJ2498 : Xavier is Learning to Count
  2. 谨慎DateTime.Now在EF的query中的使用
  3. String的length()和Array的length
  4. poj1062昂贵的聘礼(Dijkstra**)
  5. XMPP学习&mdash;&mdash;2、用户登录
  6. python(五)文件操作
  7. appserv在哪修改服务器名
  8. Hash Killer I II
  9. Insecure default in Elasticsearch enables remote code execution
  10. Oracle之PLSQL
  11. 通过ArcMap发布服务
  12. spark-shell的Scala的一些方法详解
  13. 密码疑云 (3)——详解RSA的加密与解密
  14. C++的正则
  15. Codeforces Round #485 (Div. 2)
  16. [T-ARA][떠나지마][不要离开]
  17. Python Shell 中敲击方向键显示「^[[C^[[D],问题解决
  18. JAVA框架Struts2 数据封装
  19. 4710: [Jsoi2011]分特产
  20. 实验三 敏捷开发和XP实验

热门文章

  1. numpy学习(一)
  2. layui树形结构更改
  3. python基础数据类型整理
  4. ASP.NET Identity系列教程-1目录
  5. ScrollView示例(转载)
  6. 题解 洛谷 P4145 【上帝造题的七分钟2 / 花神游历各国】
  7. c#中的位运算
  8. tomcat8.5和redis实现session共享
  9. MySql5.6表操作
  10. Java+Selenium+Testng自动化测试学习(三)— 断言