LG#P4047. [JSOI2010] 部落划分

提交2 通过1
通过率50%
时间限制3000ms
内存限制512MiB
    ID: 12135 传统题 3000ms 512MiB 尝试: 2 已通过: 1 难度: 普及+/提高- 上传者: 标签>GESPGESP强化C++c++编程题最小生成树Kruskal聚类

题目描述

题目描述

聪聪在研究一座荒岛上的居民分布。岛上共有 nn 个野人居住点,地图给出了每个居住点在平面上的坐标。野人以部落为单位生活,同一部落的居民通常住得较近,而不同部落之间经常发生争斗。

聪聪并不知道每个居住点具体属于哪个部落,但已经确认岛上的居民恰好被分成 kk 个非空部落,每个居住点必须且只能属于一个部落。

两个部落之间的距离定义为:从两个部落中各选一个居住点,所有选择方案中欧氏距离的最小值。对于一种完整划分,再考察所有不同部落对的距离,其中最小的一个表示彼此最接近的两个部落有多近。

聪聪希望找到一种划分,使“最近的两个部落之间的距离”尽可能大。请根据地图计算这个最大距离。

输入格式

第一行包含两个整数 n,kn,k,分别表示居住点数量和部落数量。

接下来 nn 行,每行包含两个整数 x,yx,y,表示一个居住点的平面坐标。

输出格式

输出一行一个实数,表示最优划分中最近两个部落之间的距离,结果保留两位小数。

4 2
0 0
0 1
1 1
1 0
1.00

样例说明 #1

把正方形四个顶点分成两个相邻点组成的部落,最近部落距离为 1.001.00

9 3
2 2
2 3
3 2
3 3
3 5
3 6
4 6
6 2
6 3
2.00

样例说明 #2

九个点划分成三组后,可以让最近的两个部落相距 2.002.00

3 3
0 0
3 4
10 0
5.00

样例说明 #3

要求三个部落且恰有三个点,因此每个点单独成部落,最近点距为 5.005.00

数据范围与约定

对于全部数据,2kn1032\le k\le n\le 10^30x,y1040\le x,y\le 10^4