记$deg_{i}$为$i$的度数,简单分类讨论可得答案下限为$\max_{i=1}^{n}deg_{i}$

另一方面,此下限是可以取到的,构造方法较多,这里给一个巧妙一些的做法——

对其以dfs(儿子顺序任意),并要求如果一个节点被父亲递归时时间为$t+1$,则返回时时间为$t$,那么父亲的时间即恰从$t$变为$t+1$

下面考虑如何保证此性质,每一个节点有两种情况:

1.其过程中某次要递归儿子时,其时间达到了$\max_{i=1}^{n}deg_{i}$(那么搜下去即超过了此下限),那么将其的时间改为$t-son$(其中$t+1$为其被父亲递归时时间,$son$为剩余儿子数,显然$t\ge son$)

2.某点不存在上述情况,则在最后将其的时间改为$t$(意义与上面相同)

由此,即可归纳上述性质

时间复杂度为$o(n)$,可以通过

 1 #include<bits/stdc++.h>
2 using namespace std;
3 #define N 100005
4 vector<int>v[N];
5 vector<pair<int,int> >ans;
6 int n,T,x,y,lim;
7 void dfs(int k,int fa){
8 int t=T-1;
9 for(int i=0;i<v[k].size();i++)
10 if (v[k][i]!=fa){
11 if (T==lim){
12 T=t;
13 for(int j=i;j<v[k].size();j++)
14 if (v[k][j]!=fa)T--;
15 ans.push_back(make_pair(k,T));
16 }
17 ans.push_back(make_pair(v[k][i],++T));
18 dfs(v[k][i],k);
19 ans.push_back(make_pair(k,++T));
20 }
21 if ((k!=1)&&(t!=T)){
22 ans.push_back(make_pair(k,t));
23 T=t;
24 }
25 }
26 int main(){
27 scanf("%d",&n);
28 for(int i=1;i<n;i++){
29 scanf("%d%d",&x,&y);
30 v[x].push_back(y);
31 v[y].push_back(x);
32 }
33 for(int i=1;i<=n;i++)lim=max(lim,(int)v[i].size());
34 ans.push_back(make_pair(1,0));
35 dfs(1,0);
36 printf("%d\n",(int)ans.size());
37 for(int i=0;i<ans.size();i++)printf("%d %d\n",ans[i].first,ans[i].second);
38 return 0;
39 }

最新文章

  1. JS模块化
  2. 《Linux内核分析》之第四章读书笔记
  3. Atitit 编程语言常用算法attilax总结
  4. isIsomorphic
  5. GUI_DOWNLOAD参数说明
  6. macos+apache+php+phpmyadmin 的整合过程梳理
  7. 实现去哪儿来回机票选择的view
  8. Eclipse Debug调试遇到的问题
  9. kubectl 常用命令总结
  10. js 格式为2018-08-25 11:46:29 的日期比较方法
  11. 在eclipse中使用git的pull功能时报错解决办法
  12. 网络协议之TCP
  13. 令狐冲和TCP/IP协议的第三层协议的关系(经典)
  14. guaua学习,工具专题
  15. ubuntu启动脚本
  16. Leetcode 之Count and Say(35)
  17. c++ 返回对象的引用要小心
  18. Laravel5.1 模型 --一对一关系
  19. poj 1836 LIS变形
  20. 都是stm32的JTAG引脚惹的祸

热门文章

  1. java 从零开始手写 RPC (04) -序列化
  2. 分布式锁Redission
  3. 实践篇 -- Redis客户端缓存在SpringBoot应用的探究
  4. 洛谷4366——最短路(dijkstra,思维,异或)
  5. [源码解析]PyTorch如何实现前向传播(1) --- 基础类(上)
  6. 网页常用的css特效让互动留住客户
  7. 重磅!微软发布 vscode.dev,把 VS Code 带入浏览器!
  8. 【Java虚拟机7】ClassLoader源码文档翻译
  9. netty系列之:netty对http2消息的封装
  10. better-scroll快速上手及封装(vue项目)