木の直径を求める

頂点数 v の木が与えられており、あなたのタスクはこの木の直径を求めることです。直径とは、最も離れている2つの頂点間を結ぶパスの長さを指します。

入力

最初の行には単一の整数 v (1 ≤ v ≤ 100000) が与えられます。

続く v-1 行には、それぞれ整数 v1, v2 (1 ≤ v1, v2 ≤ v) がペアで与えられます。これは頂点 v1 と頂点 v2 が互いにつながっていることを意味します。

出力

与えられた木の直径を出力してください。

入力

出力

3 1 2 1 3

2

5 1 2 1 3 3 4 3 5

3

Hint 1

異なる頂点を始点として、複数回DFSを実行できます。

Hint 2

まずノード1を始点としてDFSを行い、最も遠い頂点を見つけてください(木にはサイクルがないため、BFSなしでも可能です)。

その後、見つけた頂点を始点にもう一度DFSを行い、さらに遠い頂点を探すことで、木の直径を求めることができます。

Constraints

Time limit: 2 seconds

Memory limit: 512 MB

Output limit: 1 MB

To check your solution you need to sign in
Sign in to continue