zoukankan      html  css  js  c++  java
  • Uva10034(Freckles)

    最基础的最小生成树,简单题。

    View Code
     1 #include <stdio.h>
     2 #include <math.h>
     3 #include <stdlib.h>
     4 #define D(x1,y1,x2,y2) (sqrt((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2)))
     5 #define N 100
     6 #define M 5000
     7 struct node
     8 {
     9     int a,b;
    10     double d;
    11 }edge[M];
    12 int n,m;
    13 double x[N],y[N];
    14 int p[M];
    15 void make_set()
    16 {
    17     int i;
    18     for(i=0;i<m;i++)  p[i]=i;
    19 }
    20 int find_set(int i)
    21 {
    22     return i==p[i]?p[i]:(p[i]=find_set(p[i]));
    23 }
    24 int union_set(int i,int j)
    25 {
    26     i=p[i],j=p[j];
    27     p[j]=i;
    28 }
    29 int cmp(void const *a,void const *b)
    30 {
    31     return ((struct node*)a)->d-((struct node*)b)->d>0?1:-1;
    32 }
    33 int main()
    34 {
    35     int t,i,j;
    36     double ans;
    37     scanf("%d",&t);
    38     while(t--)
    39     {
    40         scanf("%d",&n);
    41         for(i=0;i<n;i++)
    42         {
    43             scanf("%lf%lf",&x[i],&y[i]);
    44         }
    45         m=0;
    46         for(i=0;i<n;i++)
    47         {
    48             for(j=i+1;j<n;j++)
    49             {
    50                 edge[m].a=i,edge[m].b=j;
    51                 edge[m++].d=D(x[i],y[i],x[j],y[j]);
    52             }
    53         }
    54         make_set();
    55         qsort(edge,m,sizeof(edge[0]),cmp);
    56         for(i=0,ans=0;i<m;i++)
    57         {
    58             if(find_set(edge[i].a)==find_set(edge[i].b))    continue;
    59             union_set(edge[i].a,edge[i].b);
    60             ans+=edge[i].d;
    61         }
    62         printf("%.2lf\n",ans);
    63         if(t)   printf("\n");
    64     }
    65     return 0;
    66 }
  • 相关阅读:
    favicon.ico请求处理
    Node.js学习(Node.js基础)
    实现主机访问虚拟机网页的方法总结
    有向/无向图中搜环
    后缀自动机
    莫队算法
    A* 算法求第k短路径
    次小生成树算法
    AC自动机详解
    Link-Cut-Tree详解
  • 原文地址:https://www.cnblogs.com/algorithms/p/2444943.html
Copyright © 2011-2022 走看看