最小生成树

原创 2015年07月06日 18:40:04
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. }  
版权声明:本文为博主http://www.feixueteam.net原创文章,未经博主允许不得转载。

基于matlab的最小生成树prim算法

  • 2017年11月28日 18:53
  • 2KB
  • 下载

最小生成树(prime 算法和克鲁斯卡尔算法)

最小生成树-Prim算法和Kruskal算法  分别适用于不同类型的图结构:prime算法适合于边多而定点少的,库鲁萨卡尔算法适合于边少定点多的情况。 Prim算法 1.概览 普里姆算...

最小生成树及其拓展ppt

  • 2017年07月09日 11:20
  • 127KB
  • 下载

最小生成树之prim

  • 2016年01月03日 10:15
  • 3KB
  • 下载

图结构练习——最小生成树 Kruskal算法

图结构练习——最小生成树 Time Limit: 1000ms   Memory limit: 65536K  有疑问?点这里^_^ 题目描述  有n个城市,其中有些城市之间可以...

matlab 最小生成树程序

  • 2015年09月13日 17:19
  • 636B
  • 下载

最小生成树

  • 2013年10月24日 00:02
  • 1KB
  • 下载

最小生成树prime算法(和Dijkstra算法很类似,除了下面有个地方不同)

#include #include #include #include #include #include #include //poj1258 最小生成树prime算法(和Di...

数据结构 PRIM最小生成树

  • 2014年05月29日 20:52
  • 1.06MB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:最小生成树
举报原因:
原因补充:

(最多只允许输入30个字)