时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 256 M,其他语言512 M
64bit IO Format: %lld
题目描述
给定一颗

个结点的无向无根树,树上有三个人在做游戏,记他们分别为

。

需要依次抓住

和

(也就是说

需要先抓住

之后才能去抓

(在此之前

可以看作是无敌的,且

可以和

处于同一结点上))。
每一秒

都可以经过一条树上边(也可以位于当前结点不动),且若

与

当前要抓的人在某一条边上相遇,也看做是

抓住了当前需要抓住的人(显然两者应该是在当前边的中点相遇,所以

应当是花了

秒就可以抓住当前目标)。
游戏开始于

时刻,此时

是分别处于不同结点上的,

遵循的操作是“尽可能快的抓住自己当前的目标”,

遵循的操作是“
在使自己尽可能晚被抓住的前提下使
尽可能晚的被抓住”,

遵循的操作使“使自己尽可能晚的被抓住”。
已知

都是非常聪明的(总会做出最有利与自己的选择),你能告诉牛牛

抓住

和

的时刻分别是多少吗?
输入描述:
输入第一行一个整数
代表树的结点个数。
接下来
行每行两个整数
代表结点
和结点
之间存在一条无向边。
接下来一行三个不同的整数
分别代表
初始时的位置。
保证:
输入数据是一棵树。
输出描述:
输出共一行分别代表
抓住
和
抓住
的时刻。