ZOJ 1203 Swordfish
题目:
There exists a world within our world
A world beneath what we call cyberspace.
A world protected by firewalls,
passwords and the most advanced
security systems.
In this world we hide
our deepest secrets,
our most incriminating information,
and of course, a shole lot of money.
This is the world of Swordfish.
We
all remember that in the movie Swordfish, Gabriel broke into the World
Bank Investors Group in West Los Angeles, to rob $9.5 billion. And he
needed Stanley, the best hacker in
the world, to help him break into the password protecting the bank
system. Stanley's lovely daughter Holly was seized by Gabriel, so he had
to work for him. But at the last moment, Stanley made some little trick
in his hacker mission: he injected a trojan
horse in the bank system, so the money would jump from one account to
another account every 60 seconds, and would continue jumping in the next
10 years. Only Stanley knew when and where to get the money. If Gabriel
killed Stanley, he would never get a single
dollar. Stanley wanted Gabriel to release all these hostages and he
would help him to find the money back.
You
who has watched the movie know that Gabriel at last got the money by
threatening to hang Ginger to death. Why not Gabriel go get the money
himself? Because these money keep jumping,
and these accounts are scattered in different cities. In order to
gather up these money Gabriel would need to build money transfering
tunnels to connect all these cities. Surely it will be really expensive
to construct such a transfering tunnel, so Gabriel
wants to find out the minimal total length of the tunnel required to
connect all these cites. Now he asks you to write a computer program to
find out the minimal length. Since Gabriel will get caught at the end of
it anyway, so you can go ahead and write the
program without feeling guilty about helping a criminal.
Input:
The
input contains several test cases. Each test case begins with a line
contains only one integer N (0 <= N <=100), which indicates the
number of cities you have to connect. The next
N lines each contains two real numbers X and Y(-10000 <= X,Y <=
10000), which are the citie's Cartesian coordinates (to make the problem
simple, we can assume that we live in a flat world). The input is
terminated by a case with N=0 and you must not print
any output for this case.
Output:
You
need to help Gabriel calculate the minimal length of tunnel needed to
connect all these cites. You can saftly assume that such a tunnel can be
built directly from one city to another.
For each of the input cases, the output shall consist of two lines: the
first line contains "Case #n:", where n is the case number (starting
from 1); and the next line contains "The minimal distance is: d", where d
is the minimal distance, rounded to 2 decimal
places. Output a blank line between two test cases.
Sample Input:
5
0 0
0 1
1 1
1 0
0.5 0.5
0
Sample Output:
Case #1:
The minimal distance is: 2.83
题意描述:
题目描述的很有意思(大部分都是跟题无关的废话),简单来说给你N个点的坐标,让你计算它们的最小生成树的距离。
解题思路:
将数据转化成邻接矩阵,使用Prim算法即可。
代码实现:
#include<stdio.h>
#include<math.h>
#include<string.h>
struct n
{
double x,y;
int find;
};
int main()
{
int n,i,j,book[],count,k,t=;
double e[][],dis[],sum,min;
struct n c[];
while(scanf("%d",&n),n != )
{
for(i=;i<=n;i++)
scanf("%lf%lf",&c[i].x,&c[i].y);
for(i=;i<=n;i++)
{
for(j=i;j<=n;j++)
{
if(i==j)
e[i][j]=;
else
{
e[i][j]=sqrt((c[i].x-c[j].x)*(c[i].x-c[j].x)+(c[i].y-c[j].y)*(c[i].y-c[j].y));
e[j][i]=e[i][j];
}
}
}
memset(book,,sizeof(book));
for(i=;i<=n;i++)
dis[i]=e[][i];
book[]=;
sum=;//sum 初始化
count=;//count 初始化
count++;
while(count < n)
{
min=;
for(i=;i<=n;i++)
{
if(!book[i] && dis[i]<min)
{
min=dis[i];
j=i;
}
}
book[j]=;
count++;
sum += dis[j];
for(k=;k<=n;k++)
{
if(!book[k] && dis[k] > e[j][k])
dis[k]=e[j][k];
}
} if(t != )
printf("\n");
printf("Case #%d:\nThe minimal distance is: %.2lf\n",++t,sum); }
return ;
}
易错分析:
1、很无奈,初始化问题要牢记。
2、格式问题
ZOJ 1203 Swordfish的更多相关文章
- 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 MST
http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=1203 大意: 给出一些点,求MST 把这几天的MST一口气发上来. kru ...
- zoj 1203 Swordfish prim算法
#include "stdio.h". #include <iostream> #include<math.h> using namespace std; ...
- POJ题目细究
acm之pku题目分类 对ACM有兴趣的同学们可以看看 DP: 1011 NTA 简单题 1013 Great Equipment 简单题 102 ...
- 【转】POJ百道水题列表
以下是poj百道水题,新手可以考虑从这里刷起 搜索1002 Fire Net1004 Anagrams by Stack1005 Jugs1008 Gnome Tetravex1091 Knight ...
- [zoj解题] 1203
#include <stdio.h> #include <stdlib.h> #include <math.h> #define MAXN 100 #define ...
- ZOJ题目分类
ZOJ题目分类初学者题: 1001 1037 1048 1049 1051 1067 1115 1151 1201 1205 1216 1240 1241 1242 1251 1292 1331 13 ...
- ZOJ People Counting
第十三届浙江省大学生程序设计竞赛 I 题, 一道模拟题. ZOJ 3944http://www.icpc.moe/onlinejudge/showProblem.do?problemCode=394 ...
随机推荐
- lesson - 8 Linux文档的压缩和打包
内容概要:1. gzip工具语法: gzip [-d#] filename 其中#为1-9的数字,默认压缩级别为6 只能压缩文件gzip filename 生成filename.gz 源文件消失解压 ...
- LVS-DR集群搭建
安装LVS 下载源码包,安装时需要根据自己的内核,下载 ipvsadm-1.26.tar.gz的源码包,在进行编译安装以后,我们需要检查必需包是否安装: 1.对内核文件做链接 # uname -r 2 ...
- 轻量级quill富文本编辑器
因为公司产品需要在移动端编辑文本,所以发现了这个轻量级的好东西,网上也没找到比较好的案例,就自己总结了下,有兴趣的直接复制代码运行看看就知道啦! 下面是quill.js的CDN加速地址: <!- ...
- css3特效样式库
直接调用样式类即可: /* animation */ .a-bounce,.a-flip,.a-flash,.a-shake,.a-swing,.a-wobble,.a-ring{-webkit-an ...
- Spring aop 注解参数说明
在spring AOP中,需要使用AspectJ的切点表达式语言来定义切点. 关于Spring AOP的AspectJ切点,最重要的一点是Spring仅支持AspectJ切点指示器(pointcut ...
- HBase跨地区机房的压测小程序——从开发到打包部署(图文版)
今天做了一个跨地区机房的压测小程序,主要的思路就是基于事先准备好的rowkey文件,利用多线程模拟并发的rowkey查询,可以实现并发数的自由控制.主要是整个流程下来,遇到了点打包的坑,所以特意记录下 ...
- 极光配置-》thinkphp3.2.3
1,小白我搞了几天,终于得到了这样的结果(我猜应该是成功了吧). { "body": { "sendno": "100000", " ...
- 前端MVC Vue2学习总结(七)——ES6与Module模块化、Vue-cli脚手架搭建、开发、发布项目与综合示例
使用vue-cli可以规范项目,提高开发效率,但是使用vue-cli时需要一些ECMAScript6的知识,特别是ES6中的模块管理内容,本章先介绍ES6中的基础与模块化的内容再使用vue-cli开发 ...
- 关于t00ls的挂机脚本
0x00 前言 今天早上发现t00ls上有人发了个挂机脚本,二十四小时刷时间以及刷Tubi. 轻轻松松升级,坐收Tubi成富翁. 代码很简单,就是带上cookie每隔一段时间(比如60秒)去请求一下某 ...
- ActiveMQ进阶学习
本文主要讲述ActiveMQ与spring整合的方案.介绍知识点包括spring,jms,activemq基于配置文件模式管理消息,消息监听器类型,消息转换类介绍,spring对JMS事物管理. 1. ...