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 ...
随机推荐
- phpmyadmin连接远程mysql
phpmaadmin连接远程mysql连接远程mysql步骤.保证已经有�phpmyadmin,如果没有,去http://www.phpmyadmin.net/home_page/downloads. ...
- 判断django中的orm为空
result= Booking.objects.filter() #方法一 .exists() if result.exists(): print "QuerySet has Data&qu ...
- Server 主机屋云服务器 宝塔面板 部署nginx反向代理的vue项目
图文记录云服务器上部署需要nginx反向代理的vue项目: 一.先登录并购买云服务器,根据自己需求购买,此处不详细介绍: 二.登录后如下图,点击进入云服务器界面: 三.在云服务器界面点击管理,进入管理 ...
- PHP的垃圾回收机制(开启垃圾回收机制后的优缺点是什么)
PHP的垃圾回收机制(开启垃圾回收机制后的优缺点是什么) 一.总结 一句话总结: 拿时间换空间:针对内存泄露的情况,可以节省大量的内存空间,但是由于垃圾回收算法运行耗费时间,开启垃圾回收算法会增加脚本 ...
- jeecms框架单点登录功能的实现
单点登录的功能实现主要原理: 1: 在点击登录按钮的时候使用reponse.addCookie()方法向浏览器发送cookie: 2: 在前段拦截器中的request.getCookie()在接收到设 ...
- rdf(资源描述框架)
资源描述框架(Resource Description Framework),一种用于描述Web资源的标记语言.RDF是一个处理元数据的XML(标准通用标记语言的子集)应用,所谓元数据,就是“描述数据 ...
- 浓缩版 《C和指针》基础篇(Chpt.1~Chpt.9)
导语 近日,笔者在课业之余阅读了<C和指针(Pointers on C)> (by Kenneth A.Reek)一书,从中记录了关于C语言的诸多知识点,包括在C语言基础特性的学习过程中没 ...
- python 中文乱码问
在本文中,以'哈'来解释作示例解释所有的问题,“哈”的各种编码如下: 1. UNICODE (UTF8-16),C854: 2. UTF-8,E59388: 3. GBK,B9FE. 一.python ...
- LA4123 Glenhow Museum
题目大意:蓝书P115 不愧是WF的题 不难发现R的个数为L/2 + 2,O的个数为L/2 - 2 三种做法,第一种比较麻烦,dp[i][j][k][l]表示i个R,j个O,第一个元素是(k)R,最后 ...
- http://codeforces.com/gym/100623/attachments H题
http://codeforces.com/gym/100623/attachments H题已经给出来的,包括后来添加的,都累加得到ans,那么从1-ans都是可以凑出来的,如果ans<a[n ...