10034 - Freckles 克鲁斯克尔最小生成树!~

/*
10034 - Freckles
克鲁斯克尔最小生成树!~
*/
#include<iostream>
#include<cstdio>
#include<cmath>
#include<algorithm>
using namespace std;

struct node{
   double x, y;
};

struct tree{
   int u, v;
   double d;
};

node nd[105];
int f[105];
tree tt[5010];

bool cmp(tree a, tree b){
   return a.d < b.d;
}

int getFather(int x){
   return x==f[x] ? x : f[x]=getFather(f[x]);
}

int Union(int a, int b){
   int fa=getFather(a), fb=getFather(b);
   if(fa!=fb){
      f[fa]=fb;
      return 1;
   }
   return 0;
} 

int main(){
   int t;
   cin>>t;
   while(t--){
      int n;
      cin>>n;
      for(int i=1; i<=n; ++i){
         cin>>nd[i].x>>nd[i].y;
         f[i]=i;
      }
      int cnt=0;
      for(int i=1; i<n; ++i)
         for(int j=i+1; j<=n; ++j){
            tt[cnt].u=i;
            tt[cnt].v=j;
            tt[cnt++].d=sqrt((nd[i].x-nd[j].x)*(nd[i].x-nd[j].x) + (nd[i].y-nd[j].y)*(nd[i].y-nd[j].y));
         }
      sort(tt, tt+cnt, cmp);
      double sum=0.0;
      for(int i=0; i<cnt; ++i){
         if(Union(tt[i].u, tt[i].v))
            sum+=tt[i].d;
      }
      printf("%.2lf\n", sum);
      if(t) printf("\n");
   }
}
时间: 2025-01-01 12:34:11

10034 - Freckles 克鲁斯克尔最小生成树!~的相关文章

poj 2560 uva 10034 - Freckles

点击打开链接uva 10034 题目意思:  给定n个点的坐标,要求找到最短的路径将这些点链接起来 思路:  Prime + 最小生成树 分析:  给定n个点的坐标,要求找到最短路.很明显的最小生成树的题目,利用Prime就可以.这里记得要先求出每一条边的长度 代码: #include<algorithm> #include<iostream> #include<cstdio> #include<cstring> #include<cmath>

最小生成树【完结】

第一题 hdu 1232 畅通工程 点击打开hdu 1232 思路:模板题 点击查看代码 第二题 hdu 1233 还是畅通工程 点击打开hdu 1233 思路:模板题 点击查看代码 第三题 uva 10034 Freckles 点击打开uva 10034 思路:模板题 点击查看代码 第四题 uva 10397 Connect the Campus 点击打开uva 10397 思路:模板题 点击查看代码 第五题 uva 10369 Arctic Network 点击打开uva 10369 思路:

UvaOJ10369 - Arctic Network

/* The first line of each test case contains 1 <= S <= 100, the number of satellite channels! 注意:S表示一共有多少个卫星,那么就是有 最多有S-1个通道! 然后将最小生成树中的后边的 S-1通道去掉就行了! 思路:最小生成树中的第 k 个最小边! */ //克鲁斯克尔算法..... #include<iostream> #include<cstdio> #include<

UVa 10034:Freckles (最小生成树模板题)

链接: http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&category=24&page=show_problem&problem=975 题目: Problem A: Freckles In an episode of the Dick Van Dyke show, little Richie connects the freckles on his Dad's back to fo

win7系统下关闭闭英特尔快速存储技术的方法教程

  Intel快速存储技术是一种可以提高磁盘的读写性能和保护磁盘的技术.不过使用该存储服务会占用大量的系统资源,如果你不需要该功能河东软件园小编建议你将其关闭,那么在win7系统下如何关闭Intel快速存储技术呢?下面我们看下详细的操作方法吧! 第一步.Win7系统如果安装了Intel快速存储技术支持的话,在桌面的,右下角会显示下面所示的图标. 第二步.双击托盘里面的Intel快速存储技术图标的话,就会弹出来下图所示的窗口,这其实就是快速存储服务的控制面板. 第三步.直接单击管理选项,也可以单击

Win7提示“英特尔(R)快速存储技术未在运行”怎么办?

  故障现象: 英特尔(R)RST 服务是英特尔快速存储服务,即 intel rapidst,该程序为配备 SATA 磁盘的台式机.移动电脑和服务器平台系统提供更高的性能和可靠性.当使用一个或多个 SATA 磁盘时,可因性能提高及耗电降低而获益.使用多个磁盘时,可增强对磁盘故障时数据丢失的保护,安装 Intel 快速存储服务前需要于 BIOS 中开启 AHCI 模式.很多计算机用户在开机后会发现 Intel(R) Rapid 状态为英特尔(R)RST 服务未在运行,右键选择打开英特尔快速存储技术

Win7桌面右下角提示“英特尔(R)快速存储技术未在运行”怎么办?

  故障现象: 英特尔(R)RST 服务是英特尔快速存储服务,即 intel rapidst,该程序为配备 SATA 磁盘的台式机.移动电脑和服务器平台系统提供更高的性能和可靠性.当使用一个或多个 SATA 磁盘时,可因性能提高及耗电降低而获益.使用多个磁盘时,可增强对磁盘故障时数据丢失的保护,安装 Intel 快速存储服务前需要于 BIOS 中开启 AHCI 模式.很多计算机用户在开机后会发现 Intel(R) Rapid 状态为英特尔(R)RST 服务未在运行,右键选择打开英特尔快速存储技术

Win7提示“英特尔(R)快速存储技术未在运行”怎么办

    故障现象: 英特尔(R)RST 服务是英特尔快速存储服务,即 intel rapidst,该程序为配备 SATA 磁盘的台式机.移动电脑和服务器平台系统提供更高的性能和可靠性.当使用一个或多个 SATA 磁盘时,可因性能提高及耗电降低而获益.使用多个磁盘时,可增强对磁盘故障时数据丢失的保护,安装 Intel 快速存储服务前需要于 BIOS 中开启 AHCI 模式.很多计算机用户在开机后会发现 Intel(R) Rapid 状态为英特尔(R)RST 服务未在运行,右键选择打开英特尔快速存储

数据结构-最小生成树的答案错误,求解

问题描述 最小生成树的答案错误,求解 #include #include #define INFINTY 51//不知道怎么定义,才算无穷大 #define MAX_VERTEX_NUM 50 typedef struct { int a[MAX_VERTEX_NUM];//顶点向量 int edges[MAX_VERTEX_NUM[MAX_VERTEX_NUM];//邻接矩阵 int n,;//顶点数 }Graph; int Prim(Graph G){ int *a=(int *)mallo