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 ...
随机推荐
- struts2文件上传(多文件)文件下载
一 文件上传 1.环境要求 commons-fileupload-xxx.jar commons-io-xxx.jar 2.准备jsp页面 单 <%@ page language="j ...
- python格式化输出%,while else
一.格式化输出% 需求:自我介绍模板 #格式化输出 # % s d %占位符,占个位置 s(字符串),d(数字)替换内容的类型 name = input('请输入姓名:') age = input(' ...
- RQNOJ--160 竞赛真理(01背包)
题目http://www.rqnoj.cn/problem/160 分析:这是一个01背包问题,对于每一道题目,都有两个选择"做"或者"不做". 但是唯一不同的 ...
- Markdown 格式标记符号说明
Markdown 格式标记符号说明 1. 标题 在行首插入 1 到 6个#,分别表示标题 1 到标题 6 # 这是标题1 ## 这是标题1 ###### 这是标题6 点击保存后的效果: 标题1 标题2 ...
- 【ZJOI2007】【BZOJ1059】矩阵游戏 匈牙利算法
题目描述 小Q是一个非常聪明的孩子,除了国际象棋,他还很喜欢玩一个电脑益智游戏——矩阵游戏.矩阵游戏在一个N*N黑白方阵进行(如同国际象棋一般,只是颜色是随意的).每次可以对该矩阵进行两种操作:行交换 ...
- js身份证号码验证(小程序版)
参考知乎专栏文章https://zhuanlan.zhihu.com/p/22949023 <view class='bgw'> <form> ...... <view ...
- Delphi 设计模式:《HeadFirst设计模式》Delphi2007代码---工厂模式之工厂方法[转]
1 2{<HeadFirst设计模式>工厂模式之工厂方法 } 3{ 产品类 } 4{ 编译工具 :Delphi20 ...
- Luogu P1311 选择客栈(前缀和)
P1311 选择客栈 题意 题目描述 丽江河边有\(n\)家很有特色的客栈,客栈按照其位置顺序从\(1\)到\(n\)编号.每家客栈都按照某一种色调进行装饰(总共\(k\)种,用整数\(0\)~\(k ...
- Leetcode459.Repeated Substring Pattern重复的子字符串
给定一个非空的字符串,判断它是否可以由它的一个子串重复多次构成.给定的字符串只含有小写英文字母,并且长度不超过10000. 示例 1: 输入: "abab" 输出: True 解释 ...
- Linux命令CURL用法
Curl是一个命令行方式下传输数据的开源传输工具,支持多种协议包括:FTP,HTTP,HTTPS,IMAP,POP3,TELNET等.同样支持HTTP POST方法,PUT方法,FTP上传,cooki ...