hdu 1875 畅通工程再续(prim方法求得最小生成树)
题目: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方法求得最小生成树)的更多相关文章
- HDU 1875 畅通工程再续 (Prim)
题目链接:HDU 1875 Problem Description 相信大家都听说一个"百岛湖"的地方吧,百岛湖的居民生活在不同的小岛中,当他们想去其他的小岛时都要通过划小船来实现 ...
- HDU 1875 畅通工程再续 (prim最小生成树)
B - 畅通工程再续 Time Limit:1000MS Memory Limit:32768KB 64bit IO Format:%I64d & %I64u Submit S ...
- HDU 1875 畅通工程再续 (最小生成树)
畅通工程再续 题目链接: http://acm.hust.edu.cn/vjudge/contest/124434#problem/M Description 相信大家都听说一个"百岛湖&q ...
- HDU 1875 畅通工程再续 (最小生成树)
畅通工程再续 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Subm ...
- HDU 1875 畅通工程再续(kruskal)
畅通工程再续 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Sub ...
- HDU - 1875 畅通工程再续【最小生成树】
Problem Description 相信大家都听说一个"百岛湖"的地方吧,百岛湖的居民生活在不同的小岛中,当他们想去其他的小岛时都要通过划小船来实现.现在政府决定大力发展百岛湖 ...
- HDU - 1875 畅通工程再续
Problem Description 相信大家都听说一个“百岛湖”的地方吧,百岛湖的居民生活在不同的小岛中,当他们想去其他的小岛时都要通过划小船来实现.现在政府决定大力发展百岛湖,发展首先要解决的问 ...
- hdu 1875 畅通工程再续(最小生成树,基础)
题目 让人郁闷的题目,wa到死了,必须要把判断10.0和1000.0的条件放到prim函数外面去.如代码所放.... 正确的(放在prim外): //2个小岛之间的距离不能小于10米,也不能大于100 ...
- HDU 1875 畅通工程再续 最小生成树问题
题目描述:输入一个T,表示有T组测试数据,然后每组测试数据有一个C,表示在一个湖里面有C座岛屿,现在要在岛屿之间修建桥,可以修建必须满足的条件是岛与岛之间的距离在10到1000的范围内,然后给出每座岛 ...
随机推荐
- 【收藏】常用SQL语句
.1参考手册 ), owner ), species ), sex ), birth DATE, death DATE); //创建表 mysql> show tables; //查看数据库中的 ...
- java 封装02
//Person.java public class Person{ private String name; private int age; private String sex; public ...
- windows下 jemalloc编译
准备 Windows下使用VS2015进行编译,需要使用cmake构建版本.(如果有cygwin,在其中执行VS的vcvarsall.bat后使用"CC=cl ./autogen.sh&qu ...
- OpenCV windows 上安装
1.先按照 Anaconda , 有关教程,可以去其他博客查看 2.傻瓜的装Opencv.(我采用的) 在Anaconda Prompt中输入: conda install -c https:// ...
- Ubuntu18.04下使用Blender进行视频格式转换
Ubuntu下可以使用Blender的Video Editing功能进行视频格式转换, 具体步骤: 打开Blender后, 在顶层菜单栏中, 将Choose Screen Layout修改为Video ...
- Jqeury Mobile实战之切屏效果以及屏幕滚动到底端加载更多和点击切换更多
http://blog.csdn.net/q718330882/article/details/46120691 //页面滚动到底部加载更多事件 $( window ).scroll(function ...
- android中执行(定时任务)的方法及6位随机码的产生
在网上看了很多类似的文章,比较乱,自己总结了一下,在开发中,常见的执行定时任务的方法有以下几种, 很简单的描述,有什么不懂可以留言,下面来介绍一下这几种常见的方法: 1.直接在线程中睡觉的方法,这个比 ...
- 自动化安装smokeping-2.6.11脚本
自动化安装Smokeping-2.6.11脚本 一.目的 1.1 监控目的 为方便监测各数据中心网络状况,自定义全国各节点,从而发现网络异常,判断网络故障. 1.2 本文目的 快速部署Smokepin ...
- HDU 4607 Park Visit (树的最长链)
Park Visit Time Limit: 6000/3000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total ...
- 保证java的jar包在后台运行
nohup java -jar XX.jar >temp.text &