Freckles (最小生成树)


#include<iostream>
#include<cstring>
#include<stdio.h>
#include<queue>
#include<cmath>
#include<algorithm>
#include<string> using namespace std; int Tree[]; int findRoot(int x) // 查找节点x所在树的根节点
{
if(Tree[x] == -)
return x;
else
{ // 路径优化
int tmp = findRoot(Tree[x]);
Tree[x] = tmp;
return tmp;
}
} struct Edge
{
double a, b;
double cost;
}edge[]; bool cmp(Edge e1, Edge e2)
{
return e1.cost < e2.cost;
} struct Cursor // 坐标结构
{
double x, y; // 点的坐标(x, y)
}cur[]; int main()
{
int n;
while(scanf("%d", &n) != EOF)
{
for(int i = ; i <= n; ++i)
{
Tree[i] = -; // 初始时,所有点都是孤立的集合
// 此处不能写为scanf("%f %f", &(cur[i].x), &(cur[i].y)); 否则将产生输入错误
scanf("%lf %lf", &(cur[i].x), &(cur[i].y));
} int k = ; // 抽象出的边的总数
// 遍历所有的点对
for(int i = ; i <= n; ++i) // 将坐标抽象为图中的顶点
{
for(int j = i+; j <= n; ++j) // 连接两点的线段抽象成边
{
edge[k].a = i; // 该边的两个顶点编号
edge[k].b = j;
edge[k].cost = sqrt((cur[j].x-cur[i].x)*(cur[j].x-cur[i].x)+(cur[j].y-cur[i].y)*(cur[j].y-cur[i].y));
++k;
}
}
sort(edge+, edge+k, cmp); // 对边按权值递增排序 // 最小生成树模板
double ans = ;
for(int i = ; i < k; ++i)
{
int ra = findRoot(edge[i].a);
int rb = findRoot(edge[i].b);
if(ra != rb)
{
Tree[ra] = rb;
ans += edge[i].cost;
}
} printf("%.2lf\n", ans);
} return ;
}
Freckles (最小生成树)的更多相关文章
- UVA 10034 Freckles 最小生成树
虽然是道普通的最小生成树题目,可还是中间出了不少问题,暴露的一个问题是不够细心,不够熟练.所以这篇博客就当记录一下bug吧. 代码一:kruskal #include<stdio.h> # ...
- 题目1144:Freckles(最小生成树进阶)
题目链接:http://ac.jobdu.com/problem.php?pid=1144 详解链接:https://github.com/zpfbuaa/JobduInCPlusPlus 参考代码: ...
- 10034 - Freckles 克鲁斯克尔最小生成树!~
/* 10034 - Freckles 克鲁斯克尔最小生成树!- */ #include<iostream> #include<cstdio> #include<cmat ...
- 九度OJ 1144:Freckles(斑点) (最小生成树)
时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:1538 解决:760 题目描述: In an episode of the Dick Van Dyke show, little Richi ...
- poj 2560 Freckles
题目连接 http://poj.org/problem?id=2560 Freckles Description In an episode of the Dick Van Dyke show, li ...
- 最小生成树之Kruskal
模板题,学习一下最小生成树的Kruskal算法 对于一个连通网(连通带权图,假定每条边上的权均为大于零的实数)来说,每棵树的权(即树中所有边的权值总和)也可能不同 具有权最小的生成树称为最小生成树 生 ...
- freckles
题目描述: In an episode of the Dick Van Dyke show, little Richie connects the freckles on his Dad's back ...
- POJ2560 Freckles
Time Limit: 1000MS Memory Limit: 65536KB 64bit IO Format: %lld & %llu Description In an epis ...
- 【九度OJ】题目1144:Freckles 解题报告
[九度OJ]题目1144:Freckles 解题报告 标签(空格分隔): 九度OJ 原题地址:http://ac.jobdu.com/problem.php?pid=1144 题目描述: In an ...
随机推荐
- 定时ping取返回值并绘图
figure:last-child { margin-bottom: 0.5rem; } #write ol, #write ul { position: relative; } img { max- ...
- fastjson对Date类型的格式化
@JSONField(format="yyyy-MM-dd HH:mm:ss.SSS") private Date sendMqDate; //MQ发送时间
- 看了这么N多天DELPHI,突然我有个感觉
感觉DELPHI很像Win32汇编 语法上不谈,就编写格式.形式上,很像 delphi的一个函数 procedure TForm1.btn1Click(Sender: TObject);beg ...
- js 实现横向滚动轮播并中间暂停下
效果: html: <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> < ...
- List循环添加对象时遇到问题的解决
var temp=new handleData(); foreach(var t in data) { temp.DataValue = t.DataValue; temp.CreateTime = ...
- 枚举进程,线程,堆 CreateToolhelp32Snapshot
Takes a snapshot of the processes and the heaps, modules, and threads used by the processes.对当前系统进行一 ...
- webpack 打包生成的index 路径引用不对
webpack 在打包时在访问打包里面的index时,出现路径错误 修改方法为 解决方法:在config下面的index.js把 assetsPublicPath: '/', 修改为: assetsP ...
- 修改linux命令行的提示符PS1
# If not running interactively, don't do anything [ -z "$PS1" ] && return # check ...
- 第六章 Odoo 12开发之模型 - 结构化应用数据
在本系列文章第三篇Odoo 12 开发之创建第一个 Odoo 应用中,我们概览了创建 Odoo 应用所需的所有组件.本文及接下来的一篇我们将深入到组成应用的每一层:模型层.视图层和业务逻辑层. 本文中 ...
- Go语言cookie的基本操作
cookie数据结构介绍 cookie数据结构介绍 a. Expires,cookie过期时间,使用绝对时间.比如2018/10/10 10:10:10b. MaxAge,cookie过期时间,使用相 ...