# 最小生成树

Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)
Total Submission(s): 2835    Accepted Submission(s): 1377

Problem Description
Eddy begins to like painting pictures recently ,he is sure of himself to become a painter.Every day Eddy draws pictures in his small room, and he usually puts out his newest pictures to let his friends appreciate. but the result it can be imagined, the friends are not interested in his picture.Eddy feels very puzzled,in order to change all friends 's view to his technical of painting pictures ,so Eddy creates a problem for the his friends of you.
Problem descriptions as follows: Given you some coordinates pionts on a drawing paper, every point links with the ink with the straight line, causes all points finally to link in the same place. How many distants does your duty discover the shortest length which the ink draws?

Input
The first line contains 0 < n <= 100, the number of point. For each point, a line follows; each following line contains two real numbers indicating the (x,y) coordinates of the point.

Input contains multiple test cases. Process to the end of file.

Output
Your program prints a single real number to two decimal places: the minimum total length of ink lines that can connect all the points.

Sample Input
3 1.0 1.0 2.0 2.0 2.0 4.0

Sample Output
3.41

ac代码：

1. #include <iostream>
2. #include <algorithm>
3. #include <cstdio>
4. #include <cmath>
5. using namespace std;
6. const int N=10005;
7. double leftt[N],rightt[N];
8. //double value[N];
9. int father[N],r[N];
10. struct point{
11.   int x,y;
12.   double value;
13. }aa[10005];
14. int cmp(const int i,const int j){
15.     return aa[i].value<aa[j].value;
16. }
17. int find(int x){
18.   if(father[x]!=x)
19.       father[x]=find(father[x]);
20.   return father[x];
21. }
22. int main(){
23.   int n;
24.   while(scanf("%d",&n)!=EOF){
25.       for(int i=0;i<N;++i){
26.         father[i]=i;
27.         r[i]=i;
28.         aa[i].value=0.0;
29.       }
30.        /*for(int i=0;i<10;++i)
31.       {printf("%d  ",r[i]);}*/
32.       for(int i=0;i<n;++i){
33.         scanf("%lf%lf",&leftt[i],&rightt[i]);
34.       }
35.       int k=0;
36.       for(int i=0;i<n;++i){
37.           for(int j=0;j<n;++j){
38.               if(i!=j)
39.               {aa[k].value=sqrt((leftt[i]-leftt[j])*(leftt[i]-leftt[j])+(rightt[i]-rightt[j])*(rightt[i]-rightt[j]));
40.                 aa[k].x=i;
41.                 aa[k].y=j;
42.                 k++;
43.               }
44.           }
45.       }
46.       //printf("k===%d\n",k);
47.       /*for(int i=0;i<k;++i)
48.       {printf("%d  ",r[i]);}*/
49.       sort(r,r+k,cmp);
50.       /*for(int i=0;i<k;++i)
51.       {printf("%d  ",r[i]);}
52.       printf("\n");*/
53.       double sum=0;
54.       for(int i=0;i<k;++i){
55.         int e=r[i];
56.         int x=find(aa[e].x);
57.          int y=find(aa[e].y);
58.         if(x!=y){
59.             sum+=aa[e].value;
60.           /*printf("x==%d\n  y==%d\n",x,y);
61.           printf("sum===%.2lf\n",sum);*/
62.           father[x]=y;
63.         }
64.       }
65.       printf("%.2lf\n",sum);
66.   }
67.   return 0;
68. }

• 本文已收录于以下专栏：

## 比较好的题目“典型的最小生成树”

Watering Hole My Tags   (Edit)   Source : USACO 2008 Open  ...
• struggle_mind
• 2014年05月07日 21:33
• 1040

## 最小生成树总结

• u013555159
• 2016年05月07日 12:13
• 848

## 最小生成树计数-Kruskal+Matrix_Tree定理

/* *算法引入： *给定一个含有N个结点M条边的无向图,求它最小生成树的个数t(G); * *算法思想： *抛开“最小”的限制不看,如果只要求求出所有生成树的个数,是可以利用Matrix-...
• Jarily
• 2013年05月08日 20:55
• 5860

## 贪心算法——Prim最小生成树

1、首先介绍一下什么是贪心算法： 贪心算法（又称贪婪算法）是指，在对问题求解时，总是做出在当前看来是最好的选择。也就是说，不从整体最优上加以考虑，他所做出的是在某种意义上的局部最优解。ps：不懂得话可...
• baidu_28944591
• 2016年06月26日 16:50
• 1765

## hdu 1233 （最小生成树 简单例题）

• qq_33406883
• 2016年07月23日 15:10
• 1187

## 判断最小生成树的唯一性

• ECNU_LZJ
• 2016年12月13日 19:38
• 1564

## 最小生成树(prim算法与kruskal算法)(模板)

th写的总结，很不错，转载一下：点击打开链接   首先说一下什么是树：     1、只含一个根节点     2、任意两个节点之间只能有一条或者没有线相连     3、任意...
• zwj1452267376
• 2015年08月13日 08:54
• 1506

## 最小生成树题集

A题，L题：poj2421 简单题 题意：题目这么长，其实大部分都在扯逼-_-。以字母代替点，每行输入字母，与其相连的个数，以及相连的具体点和其距离，计算全联通最小距离。 题解：只需要把字母距离化...
• qq_33199236
• 2016年08月01日 20:21
• 1552

## 最小生成树及其构造方法

• qq122627018
• 2016年07月16日 09:32
• 2047

## 最小生成树（贪心算法）

• huangwwu11
• 2015年04月15日 23:38
• 540

举报原因： 您举报文章：最小生成树 色情 政治 抄袭 广告 招聘 骂人 其他 (最多只允许输入30个字)