#P2053. Square

Square

描述

给定一个正方形 [0,1]×[0,1][0, 1] \times [0, 1],其中包含 NN 个点 (P1,P2,,PN)(P_1, P_2, \ldots, P_N)。我们可以用一些线段连接这 NN 个点和正方形的四个角,使得任何两个点(直接或间接)都可以通过这些线段相互到达。图的长度定义为所有线段的总长度。当 NN 个点的位置固定时,一定存在一种连接方式,使得图的长度最短。我们用 LEN(P1,P2,,PN)LEN(P_1, P_2, \ldots, P_N) 来表示这种连接方式下的图的长度。

在这种情况下,LEN(P1,P2,,PN)LEN(P_1, P_2, \ldots, P_N)P1,P2,,PNP_1, P_2, \ldots, P_N 的函数。当 P1,P2,,PNP_1, P_2, \ldots, P_N 改变位置时,LEN(P1,P2,,PN)LEN(P_1, P_2, \ldots, P_N) 也会改变。可以证明,一定存在一些点 P1,P2,,PNP_1', P_2', \ldots, P_N' 在正方形内,使得 LEN(P1,P2,,PN)LEN(P_1', P_2', \ldots, P_N') 达到最小值。

给定 NN 个点的初始位置,你的任务是找到 NN 个点 P1,P2,,PNP_1'', P_2'', \ldots, P_N'',使得 P1P1+P2P2++PNPN|P_1P_1''| + |P_2P_2''| + \ldots + |P_NP_N''| 最小,并且 $LEN(P_1'', P_2'', \ldots, P_N'') = LEN(P_1', P_2', \ldots, P_N')$。你需要输出 P1P1+P2P2++PNPN|P_1P_1''| + |P_2P_2''| + \ldots + |P_NP_N''| 的值,其中 PiPi|PiPi''|PiPiPiPi'' 之间的距离。

输入
输入包含多个测试用例。对于每个测试用例,第一行包含一个整数 NN1N1001 \leq N \leq 100),表示点的数量,接下来的 NN 行给出每个点的坐标,格式如下:

x y

这里,xxyy 是在 [0,1][0, 1] 范围内的浮点数。

一个测试用例 N=0N = 0 表示输入结束,不应被处理。

输出

对于每个测试用例,输出 P1P1+P2P2++PNPN|P_1P_1''| + |P_2P_2''| + \ldots + |P_NP_N''| 的值。该值应四舍五入到小数点后三位。

输入数据 1

1  
0.2 0.5  
2  
0 0.5  
0.5 0.5  
0

输出数据 1

0.300  
0.500

来源

北京2004