题目:http://acm.hdu.edu.cn/showproblem.php?pid=1875

/************************************************************************/
/*
hdu 畅通工程再续
有条件的最小生成树
题目大意:在这些小岛中建设最小花费的桥,但是一座桥的距离必须在10 -- 1000之间。
*/
/************************************************************************/ #include <stdio.h>
#include <string.h>
#include <algorithm>
#include <math.h> #define MAX 0xfffffff const int N = ; typedef struct
{
int x,y;
}POINT; POINT p[N];
double map[N][N];
int vis[N];
int T,C,x,y,i,j; double get_distance(POINT a,POINT b)
{
return sqrt(pow(a.x-b.x,2.0)+pow(a.y-b.y,2.0));
} void build_map()
{
double len;
for (int t = ; t < C; t++)
for (int v = t; v < C; v++)
{
len = get_distance(p[t],p[v]);
if(len>= &&len <= )
map[t][v] = map[v][t] = (t==v)?:len;
else map[t][v] = map[v][t] = MAX;
} } void prim()
{
int k,t = C;
double min,sum = ;
memset(vis,,sizeof(vis));
vis[]=;
while(--t)
{
min = MAX;
for (i = ; i < C; i++)
{
if (vis[i]!= && map[][i] < min)
{
min = map[][i];
k = i;
}
}
if (min==MAX)break;
vis[k] = ;
sum += min;
for (i = ; i < C; i++)
{
if (vis[i]!= && map[k][i] < map[][i] )
map[][i] = map[k][i];
}
}
//printf("%d\n",t);
if(t==)
{
printf("%.1f\n",sum*);
}else printf("oh!\n");
} int main()
{
while(scanf("%d",&T)!= EOF)
{
for (int t = ; t < T; t++)
{
scanf("%d",&C);
for (int c = ; c < C; c++)
scanf("%d%d",&p[c].x,&p[c].y);
build_map();
prim();
} }
return ;
}

hdu 1875 畅通工程再续(prim方法求得最小生成树)的更多相关文章

  1. HDU 1875 畅通工程再续 (Prim)

    题目链接:HDU 1875 Problem Description 相信大家都听说一个"百岛湖"的地方吧,百岛湖的居民生活在不同的小岛中,当他们想去其他的小岛时都要通过划小船来实现 ...

  2. HDU 1875 畅通工程再续 (prim最小生成树)

    B - 畅通工程再续 Time Limit:1000MS     Memory Limit:32768KB     64bit IO Format:%I64d & %I64u Submit S ...

  3. HDU 1875 畅通工程再续 (最小生成树)

    畅通工程再续 题目链接: http://acm.hust.edu.cn/vjudge/contest/124434#problem/M Description 相信大家都听说一个"百岛湖&q ...

  4. HDU 1875 畅通工程再续 (最小生成树)

    畅通工程再续 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Subm ...

  5. HDU 1875 畅通工程再续(kruskal)

    畅通工程再续 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Sub ...

  6. HDU - 1875 畅通工程再续【最小生成树】

    Problem Description 相信大家都听说一个"百岛湖"的地方吧,百岛湖的居民生活在不同的小岛中,当他们想去其他的小岛时都要通过划小船来实现.现在政府决定大力发展百岛湖 ...

  7. HDU - 1875 畅通工程再续

    Problem Description 相信大家都听说一个“百岛湖”的地方吧,百岛湖的居民生活在不同的小岛中,当他们想去其他的小岛时都要通过划小船来实现.现在政府决定大力发展百岛湖,发展首先要解决的问 ...

  8. hdu 1875 畅通工程再续(最小生成树,基础)

    题目 让人郁闷的题目,wa到死了,必须要把判断10.0和1000.0的条件放到prim函数外面去.如代码所放.... 正确的(放在prim外): //2个小岛之间的距离不能小于10米,也不能大于100 ...

  9. HDU 1875 畅通工程再续 最小生成树问题

    题目描述:输入一个T,表示有T组测试数据,然后每组测试数据有一个C,表示在一个湖里面有C座岛屿,现在要在岛屿之间修建桥,可以修建必须满足的条件是岛与岛之间的距离在10到1000的范围内,然后给出每座岛 ...

随机推荐

  1. C# 7 out variables, tuples & other new features

    C# 7 out variables, tuples & other new features C# 7 is available on new Visual Studio 2017 and ...

  2. &lt;图形图像,动画,多媒体&gt; 读书笔记 --- 音效

    音频多媒体文件主要是存放音频数据信息,音频文件在录制的过程中把声音信号,通过音频编码,变成音频数字信号保存到某种格式文件里.在播放过程中在对音频文件解码,解码出的信号通过扬声器等设备就能够转成音波.音 ...

  3. Git 经常使用命令合集

    ====== Git 经常使用命令合集 ====== === 1.Git 文档 ===     Git 中文文档观看地址:http://git.oschina.net/progit/      === ...

  4. BigDecimal的用法详解(保留两位小数,四舍五入,数字格式化,科学计数法转数字,数字里的逗号处理)

    转自:https://blog.csdn.net/ochangwen/article/details/51531866 一.简介 Java在java.math包中提供的API类BigDecimal,用 ...

  5. fwrite()的返回值随着格式的不同返回值也不同;

    常用地函数fwrite fwrite()的返回值随着格式的不同返回值也不同: 也是最近涉及到代码才注意到的,汗!!! 转载了一篇文章来说明这个问题:文章地址:http://blog.csdn.net/ ...

  6. php.ini 中文版

    作者:金步国 版权声明 本文作者是一位开源理念的坚定支持者,所以本文虽然不是软件,但是遵照开源的精神发布. 无担保:本文作者不保证作品内容准确无误,亦不承担任何由于使用此文档所导致的损失. 自由使用: ...

  7. magento注册

    1. 地址保存 $_custom_address = array ( 'firstname' => 'Branko', 'lastname' => 'Ajzele', 'street' = ...

  8. EF的表左连接方法Include和Join

    在EF中表连接常用的有Join()和Include(),两者都可以实现两张表的连接,但又有所不同. 例如有个唱片表Album(AlbumId,Name,CreateDate,GenreId),表中含外 ...

  9. 【SqlServer】Sql Server 支持的数据类型

    在计算机中数据有两种特征:类型和长度.所谓数据类型就是以数据的表现方式和存储方式来划分的数据的种类.    在SQL Server 中每个变量.参数.表达式等都有数据类型.系统提供的数据类型分为几大类 ...

  10. win7 git 安装

    下载git: https://git-scm.com/download/win 二.Git安装 去官网下载完后一路下一步完成安装,如下图:   安装完后先在系统环境变量中看下是否配置   然后在桌面右 ...