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;

		}

	}

}    

  

你可能感兴趣的:(group)