hdu 1875 畅通project再续
输入n个岛的坐标,已知修桥100元/米,若能n个岛连通。输出最小费用,否则输出"oh!"
限制条件:2个小岛之间的距离不能小于10米,也不能大于1000米
分析:由于岛的坐标已知,所以两两之间的距离能够算出,再推断一下距离是否符合条件
#include<cstdio>
#include<cmath>
#include<algorithm>
using namespace std;
#define d 0.0001
int f[120],n,m;
struct stu
{
int a,b;
double c;
}t[5100];
int cmp(struct stu x,struct stu y)
{
return x.c<y.c;
}
int find(int x)
{
if(x!=f[x])
f[x]=find(f[x]);
return f[x];
}
double krus()
{
int i,k=0,x,y;
double s;
for(i=1;i<=m;i++){
x=find(t[i].a);
y=find(t[i].b);
if(x!=y){
s+=t[i].c;
k++;
if(k==n-1)
break;
f[x]=y;
}
}
if(k!=n-1)
s=-1;
return s;
}
int main()
{
int N,i,j,k,x[120],y[120];
double a,b,c,s;
scanf("%d",&N);
while(N--){
scanf("%d",&n);
for(i=1;i<=n;i++)
scanf("%d%d",&x[i],&y[i]);
for(i=1;i<=n;i++)
f[i]=i;
k=1;
for(i=1;i<=n;i++)
for(j=1;j<i;j++){ //若岛i与j连通。那j与i必定连通。存一次即可,因此循环到j<i
a=(double)(x[i]-x[j]); //记得将int 转换为 double
b=(double)(y[i]-y[j]);
c=sqrt(a*a+b*b);
if(c>=10-d&&c<=1000+d){ //推断是否符合条件
t[k].a=i;
t[k].b=j;
t[k++].c=c;
}
}
m=k-1;
sort(t+1,t+m+1,cmp);
s=krus();
if(s==-1)
printf("oh!\n");
else
printf("%.1lf\n",s*100); //保留一位小数
}
return 0;
}
hdu 1875 畅通project再续的更多相关文章
- hdu 1875 畅通project再续(kruskal算法计算最小生成树)
畅通project再续 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Tota ...
- HDU 1875 畅通project再续 (最小生成树 水)
Problem Description 相信大家都听说一个"百岛湖"的地方吧,百岛湖的居民生活在不同的小岛中,当他们想去其它的小岛时都要通过划小船来实现. 如今政府决定大力发展百岛 ...
- hdoj 1875 畅通project再续【最小生成树 kruskal && prim】
畅通project再续 Problem Description 相信大家都听说一个"百岛湖"的地方吧,百岛湖的居民生活在不同的小岛中,当他们想去其它的小岛时都要通过划小船来实现. ...
- HDU 1875 畅通工程再续 (prim最小生成树)
B - 畅通工程再续 Time Limit:1000MS Memory Limit:32768KB 64bit IO Format:%I64d & %I64u Submit S ...
- hdu 1875 畅通工程再续(prim方法求得最小生成树)
题目:http://acm.hdu.edu.cn/showproblem.php?pid=1875 /************************************************* ...
- HDU 1875 畅通工程再续 (Prim)
题目链接:HDU 1875 Problem Description 相信大家都听说一个"百岛湖"的地方吧,百岛湖的居民生活在不同的小岛中,当他们想去其他的小岛时都要通过划小船来实现 ...
- HDU 1875 畅通工程再续 (最小生成树)
畅通工程再续 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Subm ...
- HDU 1875 畅通工程再续 (最小生成树)
畅通工程再续 题目链接: http://acm.hust.edu.cn/vjudge/contest/124434#problem/M Description 相信大家都听说一个"百岛湖&q ...
- HDU 1875 畅通工程再续(kruskal)
畅通工程再续 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Sub ...
随机推荐
- C++的常量折叠(二)
前面的C++的常量折叠(一)的最后留下了一个问题,那就是在声明i的时候,加上修饰符volatile关键字,发现结果输出的就不一样了,下面来说一下volatile这个关键字. C/C++中的volati ...
- removeCss
(function ($) { //删除元素行内style中单个style和多个style //示例: //$(".b").removeCss("color") ...
- jquery获取多个checkbox的值异步提交给php
html代码: <tr> <td><input type="checkbox" name="uid" value="&l ...
- ipc$爆破密码
FOR /L %%i IN (1,1,99) DO net use \\192.168.1.1\ipc$ /user:test %%i && echo %%i>1.txt
- strlen源码剖析
学习高效编程的有效途径之一就是阅读高手写的源代码,CRT(C/C++ Runtime Library)作为底层的函数库,实现必然高效.恰好手中就有glibc和VC的CRT源代码,于是挑了一个相对简 ...
- 精通UNIX下C语言编程与项目实践
cc -I //include 目录 -L //静态库目录?动态也可以 -l //小写L,接静态库名称?动态也可以 -DXXX='"XXFF"' //-D直接定义宏 -c 只编 ...
- NET Core,Ubuntu运行
NET Core,如何开发跨平台的应用并部署至Ubuntu运行 之前写了一篇博文宣布Rabbit Rpc跨平台了“拥抱.NET Core,跨平台的轻量级RPC:Rabbit.Rpc”,在过程中尝试了如 ...
- 新唐M0特点分析
1,价格低,05x系列0.6-1.5美金,1xx系列1.5-3.5美金:2,性能好,最新32位CORTEX-M0的ARM核,唯一可工作到+5.5V的CORTEX-M0:3,速度快,CPU核能跑到50M ...
- PowerPoint2003/2007幻灯片常用快捷键大全
熟习掌握PowerPoint快捷键不仅可以对我们在制作幻灯片的时候更加熟练节省时间.而且在我们演示PPT文稿的时候,也不需要停下演讲去调试菜单工具来切换下一张,我们只需要轻轻的按一下键盘即可轻松切换P ...
- Delphi 类型转换函数(有几个函数没见过,FloatToStrF,FloatToText等等)
Chr 将一个有序数据转换为一个ANSI字符 Ord 将一个有序类型值转换为它的序号 Round 转换一个实型值为四舍五入后的整型值 Trunc 转换一个实型值为小数截断后的整型值 Int 返回浮点数 ...