您的位置:首页 > 产品设计 > UI/UE

POJ 2749 Building roads 已翻译

2016-12-24 21:42 218 查看




描述

农夫约翰的农场有N个谷仓,还有一些牛存活在每个谷仓。奶牛喜欢四处走动,所以约翰想要建立一些道路连接这些谷仓。如果他为每一对不同的谷仓建立道路,那么他必须建立N
*(N-1)/ 2条道路,这是如此昂贵,以至于cheapskate约翰永远不会这样做,虽然这是牛的最好的选择。

聪明的约翰只是有另一个好主意。他首先建立两个转移点S1和S2,然后建立一条连接S1和S2以及连接每个谷仓与S1或S2的道路的道路,即每个谷仓将与S1或S2连接,但不是与两者连接。所以每一对谷仓都将通过道路连接。为了使奶牛在周围不要花太多时间,约翰想要最小化每对谷仓之间的距离的最大值。

这不是整个故事,因为有另一个麻烦的问题。一些谷仓的母牛彼此憎恶,约翰不能将他们的谷仓连接到同一转移点。一些谷仓的牛是彼此的朋友,约翰必须将他们的谷仓连接到相同的转移点。多么头痛!现在约翰转向你寻求帮助。你的任务是找到一个可行的最佳道路建设方案,使每对谷仓之间的最大距离尽可能短,这意味着你必须决定每个谷仓应连接到哪个转移点。

我们已经知道S1,S2和N个谷仓的坐标,牛相互憎恶的谷仓对,以及牛相互之间的朋友的谷仓对。

注意,John总是垂直和水平地建立道路,因此两个地方之间的道路长度是他们的曼哈顿距离。例如,说两个坐标为(x1,y1)和(x2,y2)的点,它们之间的曼哈顿距离为|
x1-x2 | + | y1-y2 |。

输入

第一行输入由3个整数N,A和B(2 <= N <= 500,0 <= A <= 1000,0 <= B <= 1000)组成,它们是谷仓的数量,牛彼此憎恶的对谷仓和牛是彼此朋友的谷仓对的数量。

下一行包含4个整数sx1,sy1,sx2,sy2,它们分别是两个不同转移点S1和S2的坐标。

以下N行中的每一行包含两个整数x和y。它们是从第一个谷仓到最后一个谷仓的谷仓的坐标。

以下A行中的每一行包含两个不同的整数i和j(1≤i≤j≤N),它们表示母牛相互憎恶的第i和第j谷。

同一对谷仓永远不会出现不止一次。

以下B行中的每一行包含两个不同的整数i和j(1≤i≤j≤N),它们表示母牛彼此是朋友的第i和第j谷仓。同一对谷仓永远不会出现不止一次。

您应该注意,所有坐标都在[-1000000,1000000]范围内。

输出

您只需要输出一行包含一个整数,表示每对谷仓之间的距离的最大值,如果John选择最佳的道路建设方案。注意如果没有可行的解,只输出-1。


内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: