zoj 1203 Swordfish prim算法
#include "stdio.h".
#include <iostream>
#include<math.h>
using namespace std;
double dis[105][105];
double p[105][2];//点的坐标
double ans;//最短距离
int n;
void makedis()//算出两个点之间的距离
{
int i, j; double r;
for (i = 0; i < n; i++)
for (j = i; j <n; j++)
{
r = sqrt((p[i][0] - p[j][0])*(p[i][0] - p[j][0]) + (p[i][1] - p[j][1])*((p[i][1] - p[j][1])));
dis[i][j] = r;// i 点到j 点 的距离
dis[j][i] = r;
}
} void prim()
{
int temp[105]; //存放已经加入的结点
int size; // 已加入的结点个数
int i, j, k;
int curnode, pos2;
double min; temp[0] = 0;
size = 1; dis[0][0] = 1; for (i = 0; i < n - 1; i++)//执行n-1次将所有的点访问完
{
min = 32767; // 极大值
for (j = 0; j < size; j++)
{
curnode = temp[j];
for (k =0; k < n; k++)
if (dis[curnode][k] <= min && dis[k][k] == 0) //min 为当前最小值,为0表示没有访问过,如果新加入结点后有再小的边就将对应的点加入
{
min = dis[curnode][k];
pos2 = k;
}
}
ans += min;
dis[pos2][pos2] = 1;
temp[size] = pos2; size++; }
} int main()//主程序
{
int step;
int i;
step = 0;
while (scanf("%d", &n))//输入点的个数,为0时结束
{
step++;
ans = 0;//距离总和
if (n == 0) break;
if (step != 1)printf("\n");
for (i = 0; i <n; i++)//输入n 个点的坐标
{
scanf("%lf%lf", &p[i][0], &p[i][1]);
}
makedis();
prim();
printf("Case #%d:\n", step);
printf("The minimal distance is: %.2lf\n", ans);
}
return 0;
}
zoj 1203 Swordfish prim算法的更多相关文章
- ZOJ 1203 Swordfish 旗鱼 最小生成树,Kruskal算法
主题链接:problemId=203" target="_blank">ZOJ 1203 Swordfish 旗鱼 Swordfish Time Limit: 2 ...
- ZOJ 1203 Swordfish(Prim算法求解MST)
题目: There exists a world within our world A world beneath what we call cyberspace. A world protected ...
- ZOJ 1203 Swordfish
题目: There exists a world within our world A world beneath what we call cyberspace. A world protected ...
- ZOJ 1203 Swordfish MST
http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=1203 大意: 给出一些点,求MST 把这几天的MST一口气发上来. kru ...
- 图的生成树(森林)(克鲁斯卡尔Kruskal算法和普里姆Prim算法)、以及并查集的使用
图的连通性问题:无向图的连通分量和生成树,所有顶点均由边连接在一起,但不存在回路的图. 设图 G=(V, E) 是个连通图,当从图任一顶点出发遍历图G 时,将边集 E(G) 分成两个集合 T(G) 和 ...
- 最小生成树のprim算法
Problem A Time Limit : 1000/1000ms (Java/Other) Memory Limit : 32768/32768K (Java/Other) Total Sub ...
- 数据结构代码整理(线性表,栈,队列,串,二叉树,图的建立和遍历stl,最小生成树prim算法)。。持续更新中。。。
//归并排序递归方法实现 #include <iostream> #include <cstdio> using namespace std; #define maxn 100 ...
- 最小生成树——prim算法
prim算法是选取任意一个顶点作为树的一个节点,然后贪心的选取离这棵树最近的点,直到连上所有的点并且不够成环,它的时间复杂度为o(v^2) #include<iostream>#inclu ...
- 洛谷 P3366 【模板】最小生成树 prim算法思路 我自己的实现
网上有很多prim算法 用邻接矩阵 加什么lowcost数组 我觉得不靠谱 毕竟邻接矩阵本身就不是存图的好方法 所以自己写了一个邻接表(边信息表)版本的 注意我还是用了优先队列 每次新加入一个点 ...
随机推荐
- codis配置
codis集群配置 Codis 是一个分布式 Redis 解决方案, 对于上层的应用来说, 连接到 Codis Proxy 和连接原生的 Redis Server 没有明显的区别 (不支持的命令列表) ...
- django book querysets
from __future__ import unicode_literals from django.db import models from django.contrib.auth.models ...
- C#调用杀毒软件MSE扫描指定目录或文件
有这样的需求,对外网文件传到服务器上时,对文件扫描是否含有病毒.微软自己的杀毒软件MSE实现了提供了命令行调用,方便我们集成到C#开发的程序里面. 命令如下: -file "E:\t&quo ...
- [caffe]linux下安装caffe(无cuda)以及python接口
昨天在mac上折腾了一天都没有安装成功,晚上在mac上装了一个ParallelDesktop虚拟机,然后装了linux,十分钟就安装好了,我也是醉了=.= 主要过程稍微记录一下: 1.安装BLAS s ...
- innodb数据结构
Jeremy Cole on InnoDB architecture : Efficiently traversing InnoDB B+Trees with the page directory ...
- Oracle创建/删除表空间和用户(2014-3-10 记)
/*创建表空间名为:DB_NAME*/ create tablespace DB_NAME datafile 'E:\oracle_data\db_name.dbf' size 100M autoex ...
- String类型,Function类型
1.String类型: 1)创建String对象: var str=new String(s); String(s); 参数:参数 s 是要存储在 String 对象中的值或转换成 ...
- logback.xml日志配置
日志先行,日志是程序员的眼睛 控制台输出 <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAp ...
- 《R语言实战》读书笔记-- 第六章 基本图形
首先写第二部分的前言. 第二部分用来介绍获取数据基本信息的图形技术和统计方法. 本章主要内容 条形图.箱型图.点图 饼图和扇形图 直方图和核密度图 分析数据第一步就是要观察它,用可视化的方式是最好的. ...
- [Python]实现XMPP协议即时通讯发送消息功能
#-*- coding: utf-8 -*- __author__ = 'tsbc' import xmpp import time #注意帐号信息,必须加@域名格式 from_user = 'che ...