BZOJ1787【AHOI2008】Meet紧急集合
Problem
【AHOI2008】Meet 紧急集合
Description
欢乐岛上有个非常好玩的游戏,叫做“紧急集合”。在岛上分散有个等待点,有条道路连接着它们,每条道路都连接某两个等待点,且通过这些道路可以走遍所有的等待点,通过道路从一点到另一点要花费一个游戏币。参加游戏的三人一组,开始的时候,所有人员均任意分散在各个等待点上(每个点同时允许多个人等待),每个人均带有足够多的游戏币(用于支付使用道路的花费)、地图(标明等待点之间道路连接的情况)以及对讲机(用于和同组的成员联系)。当集合号吹响后,每个成员之间迅速联系,了解到自己组所有成员所在的等待点后,迅速在个等待点中确定一个集合点,组内所有成员将在该集合点集合,集合所用花费最少的组将是游戏的赢家。
小可可和他的朋友邀请你一起参加这个游戏,有你来选择集合点,聪明的你能够完成这个任务,帮助小可可赢得游戏吗?
Input
第一行两个正整数和(,),之间用一个空格隔开。分别表示等待点的个数(等待点也从到进行编号)和获奖所需完成的集合次数。
随后有行,每行两个正整数和,之间用空格隔开,表示编号为和编号为的等待点之间有一条路。
接着还有行,每行用三个正整数表示某次集合前小可可、小可可的朋友以及你所在的等待点的编号。
Output
一共有行,每行两个数和,用一个空格隔开。其中第行表示第次集合点选择在编号为的等待点,集合总共的花费是个游戏币。
Sample Input
1 | 6 4 |
Sample Output
1 | 5 2 |
HINT
的数据中,,
的数据中,,
标签:LCA
Solution
对于每组询问,找出三个点中两两的,这三个中必然至少有两个相同。找出那个不同的,以它为集合点,算出距离,一定最小。
原理可见博客。
Code
1 |
|