题号:NC264698
时间限制:C/C++/Rust/Pascal 2秒,其他语言4秒
空间限制:C/C++/Rust/Pascal 512 M,其他语言1024 M
64bit IO Format: %lld
题目描述
有两棵树,第一棵树有

个结点,编号分别为

,第二棵树有

个结点,编号分别为

。
定义
联结操作为:在
第一棵树的某个结点

与
第二棵树的某个结点

之间加一条边。
显然经过一次联结操作后,两棵树就会合为一棵树,任意两点均可达。于是记
)
为联结

两点后

与

之间的距离。
定义结点

之间的
极限距离 )
为:在进行一次联结操作后,结点

之间的距离的最大值,即
请计算并输出任意两个结点之间的极限距离之和,即
)
输入描述:
第一行有两个整数
,分别表示两棵树的结点数。
接下来
行每行两个整数
,表示结点
之间有一条边。
输入数据保证:
;
, 且
;
所给边构成满足题意的两棵树。
输出描述:
输出一个整数表示答案。
示例2
输入
复制
6 5
1 2
1 3
1 4
7 8
7 9
2 5
3 6
7 10
11 8