[ARC088F] Christmas Tree
题意翻译
给定一棵 $N$ 个节点的树。用如下方法生成一棵与其相同的树:
- 首先生成 $A$ 个边数均不超过 $B$ 的链。
- 重复以下操作直到所有的点连通:
- 选择两个当前属于不同连通块的点,将这两个点合并为一个点,所有原来与这两个点中的至少一个点有边的点与这个新点有边。
- 将点重新标号。
求出能够生成给定树的最小的 $A$ 值,在最小化 $A$ 的基础上最小化 $B$ 值。
对于 $100 \%$ 的数据,$2\le N\le 10^5$。
**【输入格式】**
第一行输入 $N$,随后 $N-1$ 行每行两个整数描述一条边。
**【输出格式】**
输出一行两个整数,题目所求的 $A$ 和 $B$。
题目描述
[problemUrl]: https://atcoder.jp/contests/arc088/tasks/arc088_d
高橋君は、AtCoder 社のクリスマスパーティーに向けて、クリスマスツリーを作ることにしました。
クリスマスツリーとは 頂点に $ 1 $ から $ N $ まで番号付けられた $ N $ 頂点 $ N-1 $ 辺の木で、 $ i(1\leq\ i\leq\ N-1) $ 本目の辺は頂点 $ a_i $ と頂点 $ b_i $ を結んでいます。
高橋君は、以下の方法でクリスマスツリーを作りたいです。
- $ 2 $ つの非負整数 $ A,B $ を指定する。
- 長さ $ B $ 以下のクリスマスパスを $ A $ 個用意する。ただし、長さ $ X $ のクリスマスパスとは、$ X+1 $ 頂点 $ X $ 辺からなるグラフであって、頂点に $ 1 $ から $ X+1 $ までの番号を適切につければ、$ i(1\leq\ i\leq\ X) $ 本目の辺が頂点 $ i $ と頂点 $ i+1 $ を結んでいるようにできるものを指す。
- 以下の操作を、全体が連結になるまで繰り返す。
- 異なる連結成分に属する $ 2 $ 頂点 $ x,y $ をとる。頂点 $ x $ と頂点 $ y $ をまとめて $ 1 $ つの頂点にする。より正確には、頂点 $ y $ に接続するすべての辺 $ (p,y) $ について辺 $ (p,x) $ を追加したあと、頂点 $ y $ と、$ y $ に接続する辺をすべて削除する。
- 出来上がった木の各頂点に、適当な番号をつける。
高橋君は、クリスマスツリーを作ることのできるような組 $ (A,B) $ のうち、辞書順最小のものを求めたいです。 すなわち、$ A $ の最小値を求め、$ A $ の最小値を達成するという条件のもとで $ B $ の最小値も求めたいです。
高橋君にかわって、この問題を解いてください。
输入输出格式
输入格式
入力は以下の形式で標準入力から与えられる。
> $ N $ $ a_1 $ $ b_1 $ : $ a_{N-1} $ $ b_{N-1} $
输出格式
辞書順最小の $ (A,B) $ に対し、$ A,B $ を空白区切りで出力せよ。
输入输出样例
输入样例 #1
7
1 2
2 3
2 4
4 5
4 6
6 7
输出样例 #1
3 2
输入样例 #2
8
1 2
2 3
3 4
4 5
5 6
5 7
5 8
输出样例 #2
2 5
输入样例 #3
10
1 2
2 3
3 4
2 5
6 5
6 7
7 8
5 9
10 5
输出样例 #3
3 4
说明
### 制約
- $ 2\ \leq\ N\ \leq\ 10^5 $
- $ 1\ \leq\ a_i,b_i\ \leq\ N $
- 与えられるグラフは木である
### Sample Explanation 1
下の図のような方法で、クリスマスツリーを作ることができます。 !\[\](https://img.atcoder.jp/arc088/96f78221624d6a13628f6052f5db697d.png)