题目链接:https://cn.vjudge.net/contest/66965#problem/N

注释:这道题需要用krustra,用prim的话可能会超时。并且在计算距离的时候要尽量减少步骤,具体注意事项在代码中说吧。

AC代码:

#include<iostream>
#include<string>
#include<cstring>
#include<iomanip>
#include<cmath>
#include<stdio.h>
#include<vector>
#include<algorithm>
using namespace std;
# define inf 0x3f3f3f3f
# define maxn 5000
int father[maxn];
struct Point
{
int x,y;
} q[maxn];
struct Edge
{
int fr;
int to;
double cost;
} edge[maxn];
double cal(int t1,int t2)
{
double s1=(q[t1].x-q[t2].x);
double s2=(q[t1].y-q[t2].y);
return (s1*s1+s2*s2);//不要直接计算sqrt,在累积和的时候计算
}
bool cmp(Edge t1,Edge t2)
{
return t1.cost<t2.cost;
}
int Find(int t)
{
return t==father[t]? t:father[t]=Find(father[t]);
}
int main()
{
int T;
scanf("%d",&T);
while(T--)
{
int n;
scanf("%d",&n);
for(int i=1; i<=n; i++)
{
scanf("%d%d",&q[i].x,&q[i].y);
father[i]=i;
}
int num=0;
for(int i=1; i<=n; i++)
{
for(int j=i+1; j<=n; j++)
{
double temp=cal(i,j);
if(temp<100.0||temp>1000000.0)continue;
edge[++num].fr=i;
edge[num].to=j;
edge[num].cost=temp;
}
}
// cout<<num<<endl;
sort(edge+1,edge+num+1,cmp);
double sum=0;
int ans=0;
for(int i=1; i<=num; i++)
{
int t1=Find(edge[i].fr);
int t2=Find(edge[i].to);
if(t1!=t2)
{
father[t1]=t2;
sum+=sqrt(edge[i].cost);
ans++;
}
if(ans==n-1)break;
}
if(ans<n-1)printf("oh!\n");
else printf("%.1lf\n",sum*100.0);
}
return 0;
}

最小生成树 kuangbin专题最后一个题的更多相关文章

  1. [kuangbin]专题六 最小生成树 题解+总结

    kuangbin专题链接:https://vjudge.net/article/752 kuangbin专题十二 基础DP1 题解+总结:https://www.cnblogs.com/RioTian ...

  2. kuangbin专题十二 HDU1029 Ignatius and the Princess IV (水题)

    Ignatius and the Princess IV Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32767 K ( ...

  3. Android实训案例(九)——答题系统的思绪,自己设计一个题库的体验,一个思路清晰的答题软件制作过程

    Android实训案例(九)--答题系统的思绪,自己设计一个题库的体验,一个思路清晰的答题软件制作过程 项目也是偷师的,决心研究一下数据库.所以写的还是很详细的,各位看官,耐着性子看完,实现结果不重要 ...

  4. [Writeup]二维码的一个题

    [Writeup]二维码的一个题 瓜皮感觉难出题眼,恶魔暴力膜法初现 看题 一个二维码,扫出来是where is the flag?(where is my mind?) 先感觉 用binwalk扫一 ...

  5. 旅游[SPFA或是最小生成树][简单算法的灵活题]

    旅行 [问题描述] Z 小镇是一个景色宜人的地方,吸引来自各地的观光客来此旅游观光.Z 小镇附近共有N 个景点(编号为1,2,3,…,N),这些景点被M 条道路连接着,所有道路都是双向的,两个景点之间 ...

  6. X-NUCA 2017 web专题赛训练题 阳光总在风雨后和default wp

     0X0.前言 X-NUCA 2017来了,想起2016 web专题赛,题目都打不开,希望这次主办方能够搞好点吧!还没开赛,依照惯例会有赛前指导,放一些训练题让CTFer们好感受一下题目. 题目有一大 ...

  7. 2015 湘潭大学程序设计比赛(Internet)部分题解,其中有一个题与NYOJ1057很像,贪心过~~

    仙剑奇侠传                 祝玩的开心                                                                          ...

  8. kuangbin专题 数论基础 part1?

    线段树专题太难了,那我来做数学吧! 但数学太难了,我......(扯 这两天想了做了查了整理了几道数学. 除了一些进阶的知识,像莫比乌斯反演,杜教筛,min25学不会我跳了,一些基础的思维还是可以记录 ...

  9. kuangbin专题十三-基础计算几何

    链接:https://cn.vjudge.net/contest/68968 POJ 2318 TOYS 题意:m个玩具落在n+1个区间,给你玩具的坐标,问每个区间有多少玩具. 思路:叉积的简单应用, ...

随机推荐

  1. 小程序 上啦下拉刷新window配置

    "enablePullDownRefresh": "true"   /** * 页面相关事件处理函数--监听用户下拉动作 */ onPullDownRefres ...

  2. onMeasure实例分析

    本文转自:http://blog.csdn.net/u012604322/article/details/17097105           上面这个两个视图是Android API中没有给出来的但 ...

  3. Java多线程(四) —— 线程并发库之Atomic

    一.从原子操作开始 从相对简单的Atomic入手(java.util.concurrent是基于Queue的并发包,而Queue,很多情况下使用到了Atomic操作,因此首先从这里开始). 很多情况下 ...

  4. ASP.NET Core 2 学习笔记

    之前的ASP.NET网站,只要把*.html.*.css.*.jpg.*.png.*.js等静态文件放在项目根目录,默认都可以直接被浏览:但ASP.NET Core 小改了浏览静态文件的方式,默认根目 ...

  5. 前端学习 --Css -- 子元素的伪类

    :first-child 寻找父元素的第一个子元素,在所有的子元素中排序: :last-child 寻找父元素的最后一个子元素,在所有的子元素中排序: :nth-child 寻找父元素中的指定位置子元 ...

  6. Java的I/O系统

    1.File类 File类既能代表一个特定文件的名称,又能代表一个目录下的一组文件的名称. 如果我们调用不带参数的list()方法,便可以获得此File对象包含的全部列表.然而,如果我们想获得一个受限 ...

  7. Using Immutable in React + React-Redux

    React-Redux Introduction React-Redux is a library for React based on Redux package. And the core ide ...

  8. 解题:ZJOI 2015 幻想乡战略游戏

    题面 神**所有点都爆int,我还以为我写出什么大锅了,不开long long见祖宗... 动态点分治利用点分树树高不超过log的性质,我们对每个点维护一个子树和,一个点分树子树和,一个点分树上父亲的 ...

  9. 解题:HEOI 2015 最短不公共子串

    题面 制杖四合一,HEOI以前居然出这种**题,看来HE还是联考比较好= = 首先对第二个串建SAM 第一个简单,以每个位置为起点在SAM上走,失配时更新答案 第二个先在第二个串上预处理$firs[i ...

  10. Linux crontab 命令格式与举例

    每五分钟执行  */5 * * * * 每小时执行     0 * * * * 每天执行        0 0 * * * 每周执行       0 0 * * 0 每月执行        0 0 1 ...