题目:

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(Prim算法求解MST)的更多相关文章

  1. zoj 1203 Swordfish prim算法

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

  2. POJ 1258 Agri-Net(Prim算法求解MST)

    题目链接: http://poj.org/problem?id=1258 Description Farmer John has been elected mayor of his town! One ...

  3. HDU 1863 畅通工程(Prim算法求解MST)

    题目: 省政府“畅通工程”的目标是使全省任何两个村庄间都可以实现公路交通(但不一定有直接的公路相连,只要能间接通过公路可达即可).经过调查评估,得到的统计表中列出了有可能建设公路的若干条道路的成本.现 ...

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

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

  5. ZOJ 1586 QS Network(Kruskal算法求解MST)

    题目: In the planet w-503 of galaxy cgb, there is a kind of intelligent creature named QS. QScommunica ...

  6. ZOJ 1203 Swordfish

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

  7. ZOJ 1203 Swordfish MST

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

  8. HDU 2682 Tree(Kruskal算法求解MST)

    题目: There are N (2<=N<=600) cities,each has a value of happiness,we consider two cities A and ...

  9. HDU 5253 连接的管道(Kruskal算法求解MST)

    题目: 老 Jack 有一片农田,以往几年都是靠天吃饭的.但是今年老天格外的不开眼,大旱.所以老 Jack 决定用管道将他的所有相邻的农田全部都串联起来,这样他就可以从远处引水过来进行灌溉了.当老 J ...

随机推荐

  1. Win10系统下编译GEOS3.6.2

    环境说明 1.Win10专业版.64位: 2.VS2012旗舰版: 3.cmake-3.9.0.64位: 资源准备 GEOS管网(http://trac.osgeo.org/geos)下载3.4.3版 ...

  2. 开源的前端web框架推荐

    B-JUI前端框架:http://demo.b-jui.com/ gentelella :https://colorlib.com/polygon/gentelella/ admui(收费):http ...

  3. WPF 改变Datagrid的选中行的颜色

    主要通过设置DataGrid的RowStyle和CellStyle即可. <Style TargetType="DataGridRow" x:Key="gridRo ...

  4. .net core api Post请求

    POST请求: 1.请求类型:Content-Type:application/json,参数:json字符串 后台接收参数: 1)([FromBody]UserInfo user)必须以对象形式接收 ...

  5. leetcode 75. 颜色分类 JAVA

    题目: 给定一个包含红色.白色和蓝色,一共 n 个元素的数组,原地对它们进行排序,使得相同颜色的元素相邻,并按照红色.白色.蓝色顺序排列. 此题中,我们使用整数 0. 1 和 2 分别表示红色.白色和 ...

  6. 面向对象进阶-item系列、__new__、__hash__、__eq__ (四)

    item系列 dic = {'k':'v'}# 对象 : 存储属性 和调用方法dic['k'] = 'v'# class Foo:#     def __init__(self,name,age,se ...

  7. django框架项目 国际化和本地化的实现方法

    转自 https://blog.csdn.net/scissors0707/article/details/79042458 Django国际化 所谓的国际化,是指使用不同语言的用户在访问同一个网站页 ...

  8. *p++与(*p)++与*(p++)------自增运算符常见误区

    自增运算符(++) 自增\自减运算符分为前缀形(++a)和后缀形(a++),这里重点分析自增 大部分人对前缀和后缀的理解一般是,前缀形式是先++再使用(先变后用),后缀形式是先使用再++(先用后变) ...

  9. daemon_int

    摘自 UNP #include "unp.h" #include <syslog.h> #define MAXFD 64 extern int daemon_proc; ...

  10. JavaScript基础DOM介绍和常用操作(5)

    day53 参考:https://www.cnblogs.com/liwenzhou/p/8011504.html JavaScript引入方式 location对象 window.location ...