蚂蚁上树
时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 256 M,其他语言512 M
64bit IO Format: %lld

题目描述

给定一棵 n 个节点的树,根节点编号是 1。这棵树的每一个叶节点上都有一只蚂蚁。每过 1 秒钟,可以选择一些蚂蚁向父节点走一步,但是,两只蚂蚁不能同时在一个非根节点的节点上。
问最少用多少时间,使得所有蚂蚁都走到根节点。

相关概念:
  • 树:有 n 个节点,n - 1 条边的连通无向图;
  • 根节点:没有父节点的节点,即树的最顶端的节点;
  • 非根节点:有父节点的节点。
  • 叶子节点:没有子节点的节点。

输入描述:

    第一行输入一个整数 n ( 2 \leq n \leq 5 \times 10^5 ) 表示树的顶点数。
    接下来的 n - 1 行,每行输入两个整数 x_i, y_i ( 1 \leq x_i, y_i \leq n ),表示第 i 条边连接的两个节点编号。保证给定的是一颗树。

输出描述:

    输出一个整数 t,表示所有蚂蚁到达树根所需的最短时间。
示例1

输入

复制
12
1 2
1 3
1 4
2 5
2 6
3 7
3 8
3 9
8 10
8 11
8 12

输出

复制
6

说明

树的结构如下(其中1是根节点,其余节点是非根节点):

初始蚂蚁在4,5,6,7,9,10,11,12,一种可能的移动方案如下:
1秒,将4,5,7,12节点上的蚂蚁向父节点移动一步;
2秒,将2,3,6,9节点上的蚂蚁向父节点移动一步;
3秒,将2,3,8,10节点上的蚂蚁向父节点移动一步;
4秒,将3,8,11节点上的蚂蚁向父节点移动一步;
5秒,将3,8节点上的蚂蚁向父节点移动一步;
6秒,将3节点上的蚂蚁向父节点移动一步。
示例2

输入

复制
2
2 1

输出

复制
1