编程题:贪心算法
鼹鼠是整洁、勤劳的动物。我们的鼹鼠喜欢把它的地下住所安排得井井有条,这样每个住在那里的人都知道在哪里可以找到东西。
为了实现这一点,鼹鼠用隧道将房间连接起来,这样就有了一种从一个房间到任何其他房间的独特方式。两个房间之间的距离是从一个房间到另一个房间途中经过的大厅数量。
尽管做了这么多努力,鼹鼠的一些客人还是抱怨说在某些房间之间走太长时间。
鼹鼠决定重建她的住所,关闭一条隧道,打开一条新的隧道,这样最远的两个房间之间的距离尽可能小,但仍然可以从其他房间到达每个房间。
编写一个程序,确定重建后最远的两个房间之间的距离,关闭哪个隧道,打开哪个隧道。
### 输入格式:
第一行包含一个整数$$N(1≤N≤300000)$$,表示房间的数量。房间编号为$$1$$到$$N$$。
接下来的$$N−1$$行包含两个整数,即隧道连接的房间数。
### 输出格式:
按顺序在单独的行上输出:
•重建后两个最远房间之间的距离。
•代表先前存在隧道的一对整数,应关闭该隧道。
•一对整数,即应在其中打开新隧道的房间。
注意:解决方案不一定是唯一的。输出在最远的两个房间之间实现最小距离的任何重建计划。
### 输入样例1:
in
4
1 2
2 3
3 4
### 输出样例1:
out
2
3 4
4 2
### 输入样例2:
in
7
1 3
2 3
2 7
4 3
7 5
3 6
### 输出样例2:
out
3
2 3
7 3
答案:若无答案欢迎评论
为了实现这一点,鼹鼠用隧道将房间连接起来,这样就有了一种从一个房间到任何其他房间的独特方式。两个房间之间的距离是从一个房间到另一个房间途中经过的大厅数量。
尽管做了这么多努力,鼹鼠的一些客人还是抱怨说在某些房间之间走太长时间。
鼹鼠决定重建她的住所,关闭一条隧道,打开一条新的隧道,这样最远的两个房间之间的距离尽可能小,但仍然可以从其他房间到达每个房间。
编写一个程序,确定重建后最远的两个房间之间的距离,关闭哪个隧道,打开哪个隧道。
### 输入格式:
第一行包含一个整数$$N(1≤N≤300000)$$,表示房间的数量。房间编号为$$1$$到$$N$$。
接下来的$$N−1$$行包含两个整数,即隧道连接的房间数。
### 输出格式:
按顺序在单独的行上输出:
•重建后两个最远房间之间的距离。
•代表先前存在隧道的一对整数,应关闭该隧道。
•一对整数,即应在其中打开新隧道的房间。
注意:解决方案不一定是唯一的。输出在最远的两个房间之间实现最小距离的任何重建计划。
### 输入样例1:
in
4
1 2
2 3
3 4
### 输出样例1:
out
2
3 4
4 2
### 输入样例2:
in
7
1 3
2 3
2 7
4 3
7 5
3 6
### 输出样例2:
out
3
2 3
7 3
答案:若无答案欢迎评论