题目:http://www.lydsy.com/JudgeOnline/problem.php?id=1821
给出n个野人的坐标,n个野人分别属于k个部落,现在问如何划分野人,使得每个部落之间的距离最小(部落之间的距离是部落中距离最近的两个野人的距离)
分析:
对于所有的距离排序,然后利用并查集合并即可
关键代码:(对于n==m时,特判。)
for(int i=1;i<=tot;i++){
int x = edge[i].x;
int y = edge[i].y;
x = find_set(x);
y = find_set(y);
if(x!=y){
father[y] = x;
n --;
if(n<m){
printf("%.2lf\n",edge[i].dis);
break;
}
}
}