问题:对于一棵特定的树,选择合适的根结点,使得树的高度最大。

思路:

  1. 先选择一个结点,从该结点开始遍历整棵树,获取能达到的最深的顶点(记为结点集合A);
  2. 然后从集合A中任意一个结点出发遍历整棵树,获取能达到的最深的顶点(记为结点集合B);
  3. 集合A与集合B的并集即为所求的使树高最大的根结点。

关键代码:

bool vis[maxn];
int maxDepth = -;
set<int> A, B; void DFS(int u,int depth) {
vis[u] = true;
if (depth > maxDepth) {
maxDepth = depth;
A.clear();
A.insert(u);
}
else if (depth == maxDepth) {
A.insert(u);
}
for (int i = ; i < G[u].size(); i++) {
int v = G[u][i];
if (vis[v] == false) {
DFS(v,depth+);
}
}
}

6、 (★、※)root that results in a highest tree的更多相关文章

  1. Java 中(静态)变量、(静态)代码块的执行顺序

    Java 中(静态)变量.(静态)代码块的执行顺序 非原创 本文讨论 Java 中(静态)变量.(静态)代码块的执行顺序 首先创建 3 个类 1.Foo 类 public class Foo { pu ...

  2. Java(静态)变量、(静态)代码块、构造方法的执行顺序

    Java(静态)变量.(静态)代码块.构造方法的执行顺序 总结 1.父类静态变量和静态代码块(先声明的先执行); 2.子类静态变量和静态代码块(先声明的先执行); 3.父类的变量和代码块(先声明的先执 ...

  3. gitlab修改(重置)root用户密码

    gitlab修改(重置)root用户密码 1.使用root权限登录到服务器. 2.使用以下命令启动控制台:  gitlab-rails console production 该命令有时候启动比较慢,需 ...

  4. 22、(转载)jQueryMobile 知识点总结

    本文转自:http://www.cnblogs.com/jxyedu HTML5技术生态介绍 H5的现状与未来 HTML5是用于取代1999年所制定的 HTML 4.01 和 XHTML 1.0 标准 ...

  5. Python模块:configparser、hashlib、(subprocess)

    configparser模块: 此模块用于生成和修改常见配置文档. 一个常见配置文件(.ini的后缀名)格式如下: [DEFAULT] # DEFAULT 是指后面的字典里都会默认有的内容 Serve ...

  6. 最大似然估计、n阶矩、协方差(矩阵)、(多元)高斯分布 学习摘要

    最大似然估计 似然与概率 在统计学中,似然函数(likelihood function,通常简写为likelihood,似然)和概率(Probability)是两个不同的概念.概率是在特定环境下某件事 ...

  7. Mac下常用按键符号⌘(command)、⌥(option)、⇧(shift)、⇪(caps lock)、⌃(control)、↩(return)、⌅(enter)

    常用符号如下: ⌘(command) ⌥(option) ⇧(shift) ⇪(caps lock) ⌃(control) ↩(return) ⌅(enter) 对应键盘的位置如下: 如果每次都不记得 ...

  8. shouldRasterize 光栅化、(缓存)复用、内存、内容稳定

    使用场景:稳定的视图(layer)被反复使用或进行动画: 本质:牺牲内存解放cpu: 反例:牺牲内存牺牲cpu. 单次使用或者视图有变动,shouldRasterize不会有任何用途,反而会牺牲内存. ...

  9. java中String.valueOf(obj)、(String)obj与obj.toString()有什么区别

    方法1:采用 Object.toString()方法 在这种使用方法中,因为java.lang.Object类里已有public方法.toString(),所以对任何严格意义上的java对象都可以调用 ...

随机推荐

  1. jquery获取选中值

    1.获取一组radio被选中项的值:var item = $('input[name=items][checked]').val(); 2.获取select被选中项的文本 :var item = $( ...

  2. Python中文问题

    读取数据库中文是?? 解决如下 一.python2版本需要在 文件的开头要加上编码设置来说明文件的编码  python3版本以上不需要 #encoding=utf-8 二.在连接数据的连接参数里加上字 ...

  3. Spring Developer Tools 源码分析:二、类路径监控

    在 Spring Developer Tools 源码分析一中介绍了 devtools 提供的文件监控实现,在第二部分中,我们将会使用第一部分提供的目录监控功能,实现对开发环境中 classpath ...

  4. HTML5⑥

    <!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8&quo ...

  5. 面向对象编程其实很简单--python面向对象(初级篇)

    出处:http://www.cnblogs.com/wupeiqi/ 概述 面向过程:根据业务逻辑从上到下写垒代码 函数式:将某功能代码封装到函数中,日后便无需重复编写,仅调用函数即可 面向对象:对函 ...

  6. Hadoop学习笔记05_HA

    ################# HA 即 High Available 高可用.# 其作用是为了减少主从结构的单点故障,而设置备用节点,既然学习了Hadoop生态圈,那么HA配置也是必须要掌握的. ...

  7. 异常处理:try - except 和 try finally。

    异常处理:try-except语句 1)      此处:as reason为可选参数,reason是一个变量. 2)      使用try—except语句时,检测范围内出现错误,不会有红色的报错提 ...

  8. 疑问:VS在调试的过程中,总是会提示正在加载picface.dll的符号,然后卡死在那

    环境: 硬件环境: PC 软件环境: Windows7 VS2012 MFC程序调试 现象: 调试的过程中,提示“正在从以下目录加载picface.dll的符号:C:\windows\dll”,然后就 ...

  9. 剑指Offer 9. 变态跳台阶 (递归)

    题目描述 一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级.求该青蛙跳上一个n级的台阶总共有多少种跳法. 题目地址 https://www.nowcoder.com/practice/ ...

  10. mysql数据库的基本操作命令整理

    快捷键 ctrl+l 清屏 ctrl +a 回到行首 ctrl + e 回到行末   数据库操作 进入数据库 方式1 mysql -u用户名 -p 密码 --------直接输入密码,缺点,会暴露自己 ...