城市改建
CS 城由 座美丽的小镇组成,小镇之间通过 条公路连接,任意两座小镇之间都可以互相到达。
尽管如此,居民仍常常向负责人 YY 抱怨:两座小镇之间的距离,也就是连接它们的路径所经过的公路数量,实在太远了。于是 YY 决定改建城市。
YY 认为使用 条公路连接所有小镇已经足够,因此改建后仍会保留这一结构。同时,他不打算大兴土木,只会拆除一条已有公路,再新建一条公路。
请计算改建后,所有小镇两两之间距离的最大值最小可以是多少,并给出任意一组达到该最小值的改建方案。如果存在两座小镇无法互相到达,则认为它们之间的距离为无穷大。
输入格式
第一行包含一个整数 ,表示小镇数量。
接下来 行,每行包含两个整数 、,表示小镇 与小镇 之间有一条公路。
输出格式
通常情况下,输出三行。
第一行包含一个整数,表示改建后所有小镇两两之间距离的最大值所能达到的最小值。
第二行包含两个整数,表示被拆除公路的两个端点。
第三行包含两个整数,表示新建公路的两个端点。
新建的公路可以与拆除的公路相同,例如原有结构已经最优时,可以采用这种方案。同一条公路的两个端点可以按任意顺序输出。如果有多组最优方案,输出其中任意一组即可。
特别地,当 时,没有任何公路可以拆除,此时只需输出一行 。
样例输入
10
5 3
1 3
5 9
8 5
2 6
7 10
2 1
2 4
7 6
样例输出
4
3 1
5 6
数据范围
- ;
- 小镇编号为 至 ;
- 输入的 条公路构成一棵树,任意两座小镇之间都可以互相到达;
- 本题测试数据满足 。
来源与许可
本题题面与测试数据整理自 BZOJ。
样例 1
输入
10
5 3
1 3
5 9
8 5
2 6
7 10
2 1
2 4
7 6
输出
4
3 1
5 6