hdu1875-程序员宅基地

畅通工程再续

Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 32197    Accepted Submission(s): 10557


Problem Description
相信大家都听说一个“百岛湖”的地方吧,百岛湖的居民生活在不同的小岛中,当他们想去其他的小岛时都要通过划小船来实现。现在政府决定大力发展百岛湖,发展首先要解决的问题当然是交通问题,政府决定实现百岛湖的全畅通!经过考察小组RPRush对百岛湖的情况充分了解后,决定在符合条件的小岛间建上桥,所谓符合条件,就是2个小岛之间的距离不能小于10米,也不能大于1000米。当然,为了节省资金,只要求实现任意2个小岛之间有路通即可。其中桥的价格为 100元/米。
 

Input
输入包括多组数据。输入首先包括一个整数T(T <= 200),代表有T组数据。
每组数据首先是一个整数C(C <= 100),代表小岛的个数,接下来是C组坐标,代表每个小岛的坐标,这些坐标都是 0 <= x, y <= 1000的整数。
 

Output
每组输入数据输出一行,代表建桥的最小花费,结果保留一位小数。如果无法实现工程以达到全部畅通,输出”oh!”.
 

Sample Input
  
  
   
2 2 10 10 20 20 3 1 1 2 2 1000 1000
 

Sample Output
  
  
   
1414.2

oh!

Prim算法水题,将距离小于10大于1000的路置为MAX。

#include<iostream>
#include<cstring>
#include<cstdio>
#include<cmath>
#define MAX 1000000
using namespace std;
int n,m;
double map[105][105];
int vis[105];
double mindis[105];
struct SS{
        double x,y;
};
void prim(){
        int i,j,v;
        double minn,sum=0;
        for(i=0;i<m;i++){
            vis[i]=0;
            mindis[i]=map[0][i];
        }vis[0]=1;
        for(i=1;i<m;i++){
                minn=MAX;
            for(j=0;j<m;j++){
                    if(!vis[j]&&mindis[j]<=minn){
                        minn=mindis[j];
                        v=j;
                    }
            }vis[v]=1;
            sum+=minn;
            for(j=0;j<m;j++){
                if(!vis[j]&&map[v][j]<mindis[j])
                    mindis[j]=map[v][j];
            }
        }
        if(sum<MAX){
			sum=sum*100;
            printf("%0.1lf\n",sum);
            }
        else
            printf("oh!\n");


}
double dist(double x1,double y1,double x2,double y2){
            return sqrt((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2));
}
int main(){
            int i,j,k;
            double temp;
            SS s[105];
            scanf("%d",&n);
            for(i=0;i<n;i++){
                scanf("%d",&m);
                for(j=0;j<m;j++){
                scanf("%lf%lf",&s[j].x,&s[j].y);
                }
                for(j=0;j<m;j++){
                    for(k=0;k<m;k++){
                        temp=dist(s[j].x,s[j].y,s[k].x,s[k].y);
                        if(temp>1000||temp<10)
                            temp=MAX;
                        map[j][k]=temp;
                    }
                }prim();

            }



}


版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/w1025758212/article/details/79016369

智能推荐

Scala 数组、映射和集合+wordcount程序-程序员宅基地

文章浏览阅读74次。数组1、定长数组和变长数组package cn.gec.scala import scala.collection.mutable.ArrayBuffer object ArrayDemo { def main(args: Array[String]) { //初始化一个长度为8的定长数组,其所有元素均为0 val arr1 = n..._scala array[long] wordcount

代码:灰度重心法提取线激光条纹中心线(CPP+OpenCV)_灰度中心法-程序员宅基地

文章浏览阅读2.1k次。灰度重心法是根据每行光条纹横截面内的灰度分布特征逐行进行处理,通过在行坐标的方向上,逐行计算提取光条纹区域的灰度重心点,并将该点用来代表该截面的光条纹中心点位置,最后将所有中心点拟合形成光条纹中心线。灰度重心法计算光条纹中心点的公式(光条纹第v列的灰度重心坐标):图像包含U行、V列的图像中坐标(u, v)处的像素灰度值为I(u,v),其中u=1,2,3,…,U; v=1,2,3…,V。灰度重心法提取光条纹中心线时运算速度快,实时性好。但是易受图像中的噪点干扰,导致中心线坐标偏移。#include._灰度中心法

论文查重系统的比较和选择_千万级和亿级查重哪个好-程序员宅基地

文章浏览阅读2k次。又到了毕业季,一般学校都会对毕业生的论文进行查重检测,看看大家的重复率。这个对大家的毕业是十分重要的,如果查重不过,可能会被延期毕业。所以很多学生也会自己事先查重,然后自己多次修改,达到学校的要求。可是很多学生不知道如何选择检测系统,下面我就给大家介绍一下主流的几种系统: 1.万方检测,特点是检测结果粗放,不是很令人满意,但是价格足够便宜,非常适合大家前期修改论文。 _千万级和亿级查重哪个好

FX PLC-程序员宅基地

文章浏览阅读75次。该协议实际上适用于PLC编程端口以及 FX-232AW 模块的通信。通讯格式:命令 命令码 目标设备DEVICE READ CMD "0" X,Y,M,S,T,C,DDEVICE WRITE CMD "1" X,Y,M,S,T,C,DFORCE ON CMD " 7" X,Y,M,S,T,CFORCE OFF CMD "8" X,Y,M,S,T,C传输格式: R..._fxplc一次性最多读写多少字节

DOM与虚拟DOM_dom和虚拟dom-程序员宅基地

文章浏览阅读1.8k次,点赞4次,收藏9次。1. DOM(Document Object Model)2018年通用版本是 DOM 3DOM的作用:对Html文档进行增删改查DOM文档树:(Object =&amp;amp;amp;amp;gt;)祖先 Node =&amp;amp;amp;amp;gt;Document创建Html标签;Text 创建文本;Element 创建其他元素标签;Comment 创建注释…2. Node 接口2. 1 属性childNodes //获取的..._dom和虚拟dom

Kafka-生产者-分区器详解_kafka partitioner-程序员宅基地

文章浏览阅读3.6k次,点赞4次,收藏10次。注:本文源码解析基于Kafka2.1.0版本我们知道,Kafka中的每个Topic一般会分配N个Partition,那么生产者(Producer)在将消息记录(ProducerRecord)发送到某个Topic对应的Partition时采用何种策略呢?Kafka中采用了分区器(Partitioner)来为我们进行分区路由的操作。本文将详细讨论Kafka给我们提供的分区器实现DefaultPa..._kafka partitioner

随便推点

杭电oj-2067 小兔的棋盘(卡特兰数)-程序员宅基地

文章浏览阅读241次。杭电oj-2067 小兔的棋盘(卡特兰数)Problem Description小兔的叔叔从外面旅游回来给她带来了一个礼物,小兔高兴地跑回自己的房间,拆开一看是一个棋盘,小兔有所失望。不过没过几天发现了棋盘的好玩之处。从起点(0,0)走到终点(n,n)的最短路径数是C(2n,n),现在小兔又想如果不穿越对角线(但可接触对角线上的格点),这样的路径数有多少?小兔想了很长时间都没想出来,现在想请你帮助小兔解决这个问题,对于你来说应该不难吧!Input每次输入一个数n(1<=n<=35),当n

Petya勒索软件变种Nyetya全球爆发,思科Talos率先响应-程序员宅基地

文章浏览阅读102次。自2017年5月份经历勒索软件WannaCry的大规模爆发后,思科Talos团队在6月27日发现了最新的勒索软件变种,暂命名为Nyetya。目前已经在多个国家发现了这个勒索软件的感染事件,思科Talos团队正在积极分析并不断更新最新的防护信息。原文链接:http://blog.talosintelligence.com/2017/06/worldwid...

springboot项目中自定义注解的使用总结、java自定义注解实战(常用注解DEMO)_springboot自定义注解加载字段上怎么使用-程序员宅基地

文章浏览阅读2.4w次,点赞142次,收藏1k次。初学spring的时候使用注解总觉得使用注解很神奇,加一个注解就能实现想要的功能,很好奇,也想自己根据需要写一些自己实现的自定义注解。问题来了,自定义注解到底是什么?肯定会有人和我一样有这个疑惑,我根据自己的理解总结一下。看完下面的几个使用自定义注解的实战demo,小伙伴大概就懂怎么用了。其实注解一点也不神奇,注解就是一种标志,单独使用注解,就相当于在类、方法、参数和包上加上一个装饰,什么功能也没有,仅仅是一个标志,然后这个标志可以加上一些自己定义的参数。_springboot自定义注解加载字段上怎么使用

C3P0 APPARENT DEADLOCK_apparent deadlock creating emergency threads for u-程序员宅基地

文章浏览阅读4k次。C3P0 APPARENT DEADLOCK 问题_apparent deadlock creating emergency threads for unassigned pending task

POM的语法规则_pom.xml语法-程序员宅基地

文章浏览阅读2.1k次。一、POM简介pom作为项目对象模型,通过使用pom.xml来实现管理maven项目,主要描述了项目的如下部分:配置文件、开发者需要遵循的规则、缺陷管理系统、组织和licenses、项目的url、项目的依赖性和其它所有的项目相关因素。二、POM的语法规则一份比较全的pom.xml文件可以参考如下,通过它我们来对pom.xml中的语法规则进行说明。&lt;project&gt; &lt;..._pom.xml语法

查看kafka消费组及消费者ip命令_kafka查看消费者ip-程序员宅基地

文章浏览阅读9.8k次,点赞2次,收藏6次。查看消费组./kafka-consumer-groups.sh --bootstrap-server ip:port--list//查看组中消费者状态./kafka-consuemr-groups.sh --bootstrap-server ip:port--group 消费组名称--describe_kafka查看消费者ip

推荐文章

热门文章

相关标签