BZOJ 1821: [JSOI2010]Group 部落划分 Group
题目: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; } } }