题目:

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的更多相关文章

  1. ZOJ 1203 Swordfish 旗鱼 最小生成树,Kruskal算法

    主题链接:problemId=203" target="_blank">ZOJ 1203 Swordfish 旗鱼 Swordfish Time Limit: 2 ...

  2. ZOJ 1203 Swordfish(Prim算法求解MST)

    题目: There exists a world within our world A world beneath what we call cyberspace. A world protected ...

  3. ZOJ 1203 Swordfish MST

    http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=1203 大意: 给出一些点,求MST 把这几天的MST一口气发上来. kru ...

  4. zoj 1203 Swordfish prim算法

    #include "stdio.h". #include <iostream> #include<math.h> using namespace std; ...

  5. POJ题目细究

    acm之pku题目分类 对ACM有兴趣的同学们可以看看 DP:  1011   NTA                 简单题  1013   Great Equipment     简单题  102 ...

  6. 【转】POJ百道水题列表

    以下是poj百道水题,新手可以考虑从这里刷起 搜索1002 Fire Net1004 Anagrams by Stack1005 Jugs1008 Gnome Tetravex1091 Knight ...

  7. [zoj解题] 1203

    #include <stdio.h> #include <stdlib.h> #include <math.h> #define MAXN 100 #define ...

  8. ZOJ题目分类

    ZOJ题目分类初学者题: 1001 1037 1048 1049 1051 1067 1115 1151 1201 1205 1216 1240 1241 1242 1251 1292 1331 13 ...

  9. ZOJ People Counting

    第十三届浙江省大学生程序设计竞赛 I 题, 一道模拟题. ZOJ  3944http://www.icpc.moe/onlinejudge/showProblem.do?problemCode=394 ...

随机推荐

  1. Linux(CentOS6.5)修改默认yum源为国内的阿里云、网易yum源

    官方的yum源在国内访问效果不佳. 需要改为国内比较好的阿里云或者网易的yum源 修改方式: echo 备份当前的yum源 mv /etc/yum.repos.d /etc/yum.repos.d.b ...

  2. MHA高可用架构与Atlas读写分离

    1.1 MHA简介 1.1.1 MHA软件介绍 MHA(Master High Availability)目前在MySQL高可用方面是一个相对成熟的解决方案,它由日本DeNA公司youshimaton ...

  3. Building an MFC project for a non-Unicode character set is deprecated

    1>------ 已启动生成: 项目: TestSdk, 配置: Debug Win32 ------1>C:\Program Files (x86)\MSBuild\Microsoft. ...

  4. 线程安全Dictionary

    public abstract class ReadFreeCache<TKey, TValue> { protected ReadFreeCache() : this(null) { } ...

  5. python打开一个本地目录文件路径

    os.path.abspath()os 模块为 python 语言标准库中的 os 模块包含普遍的操作系统功能.主要用于操作本地目录文件.path.abspath()方法用于获取当前路径下的文件. 比 ...

  6. HTML5图片上传本地预览

    在开发 H5 应用的时候碰到一个问题,应用只需要一张小的缩略图,而用户用手机上传的确是一张大图,手机摄像机拍的图片好几 M,这可要浪费很多流量. 我们可以通过以下方式来解决. 获取图片 通过 File ...

  7. python模块安装报错 :error: command 'gcc' failed with exit status 1

    参考:http://blog.csdn.net/fenglifeng1987/article/details/38057193 解决方法 yum install gcc libffi-devel py ...

  8. scrapy使用PhantomJS爬取数据

    环境:python2.7+scrapy+selenium+PhantomJS 内容:测试scrapy+PhantomJS 爬去内容:涉及到js加载更多的页面 原理:配置文件打开中间件+修改proces ...

  9. JDBC详解系列(三)之建立连接(DriverManager.getConnection)

      在JDBC详解系列(一)之流程中,我将数据库的连接分解成了六个步骤. JDBC流程: 第一步:加载Driver类,注册数据库驱动: 第二步:通过DriverManager,使用url,用户名和密码 ...

  10. linux下分割文件

    split -l 115 XSMD.txt -d -a 2 XSMD.txt._   注:将一个文件XSMD.txt分割成两个文件,每个大小115