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;
		}
	}
}    

  

posted @ 2012-12-17 09:11  yejinru  阅读(164)  评论(0编辑  收藏  举报