网线
Time Limit: 5000 MS Memory Limit: 32768 K
Total Submit: 68(17 users) Total Accepted: 17(15 users) Rating:  Special Judge: No
Description

试设计一个网络连接某个区域中的一些地点。给定这些地点所在的位置,网线的长度就是两个地点的线段距离,假定,给定的网线可以直接或间接的连接该地区中的所有点,试为这个地区设计一个网络系统,使得该地区所有地点都可以直接或间接的连接,并且使用网线长度最短。

Input

输入一个数字n(n<1000),给出这n个点的位置(x,y),即坐标(0≤x<1000,0≤y<1000)。

Output
输出网线的最短距离,保留小数点后四位。
Sample Input

1

1 1

2

0 0

1 1

3

0 0

0 1

1 1

Sample Output

0.0000

1.4142

2.0000

Author
彭文文@hrbust

N的数据范围比较大,克鲁斯卡算法会超时,即使路径压缩了,即使使用快排了,还是会超时,所以被逼无奈,只能用prim来做。

在计算过程中呢,我们需要考虑一个精度问题,我们如果在入图的时候就使用double或者float来写的话,很容易产生精度差,当然就会有wa的可能。

所以我们在计算过程中,入图的时候用int,只有在生成树的过程中加上sqrt(map【i】【j】)就行了,这个时候我们避免了精度差问题,也省略了很多不必要的*1.0之类的步骤。

AC代码:

#include <stdio.h>
#include <string.h>
#include <math.h>
#include <algorithm>
using namespace std;
#define inf 0x6ffffff
struct zuobiao
{int x,y;
}a[1004];
int vis[1005];//用来表示这个点有没有遍历的到.
int  dis[1005];
int  map[1005][1005];
int n;
double sum;
int diss(zuobiao a,zuobiao b)
{return (a.x-b.x)*(a.x-b.x)+(a.y-b.y)*(a.y-b.y);
}
void prim()
{int i,j,k,min;for(i=2;i<=n;i++)dis[i]=map[1][i];vis[1]=1;for(i=2;i<=n;i++)//经过N次遍历一定能遍历所有的点 也就是完成了最终目标.{min=inf;for(j=1;j<=n;j++){if(vis[j]==0 &&dis[j]<min){min=dis[j];k=j;}}if(min==inf)break;vis[k]=1;sum+=sqrt(1.0*min);//完成了一次权值加和.for(j=2;j<=n;j++){if(vis[j]==0 &&dis[j]>map[k][j])dis[j]=map[k][j];}//更新最优解.}}
int main()
{while(~scanf("%d",&n)){memset(vis,0,sizeof(vis));memset(dis,0,sizeof(dis));for(int i=1;i<=n;i++){for(int j=1;j<=n;j++){map[i][j]=inf*1.0;}}for(int i=1;i<=n;i++){scanf("%d%d",&a[i].x,&a[i].y);for(int j=1;j<i;j++){map[i][j]=map[j][i]=diss(a[i],a[j]);}}sum=0;prim();printf("%.4lf\n",sum);}
}

hrbust 哈理工oj 网线【MST+Prim】相关推荐

  1. hrbust 哈理工oj 1418 夏夜星空【带权并查集】

    夏夜星空 Time Limit: 1000 MS Memory Limit: 65536 K Total Submit: 43(20 users) Total Accepted: 19(18 user ...

  2. hrbust 哈理工oj 1633 word!word!【欧拉路、欧拉回路的有向图判断】

      word!word! Time Limit: 1000 MS Memory Limit: 32768 K Total Submit: 58(20 users) Total Accepted: 25 ...

  3. hrbust 哈理工oj 1989 营救小组【BFS】

    营救小组 Time Limit: 1000 MS Memory Limit: 32768 K Total Submit: 181(39 users) Total Accepted: 46(35 use ...

  4. hrbust 哈理工oj 1588 神医【贪心】

    神医 Time Limit: 1000 MS Memory Limit: 32768 K Total Submit: 140(33 users) Total Accepted: 43(31 users ...

  5. hrbust 哈理工oj 2016 势力较量 (并查集)

    势力较量 Time Limit: 1000 MS Memory Limit: 32768 K Total Submit: 123(48 users) Total Accepted: 70(46 use ...

  6. C. 啊对对对 (南阳理工oj—21第二次招新赛)

    解法 找到最长的公共前后缀以后,我们可以先输出t,然后t中的最长公共前后缀无需再输出(重复),只输出不重复的部分即可. 比如 aba公共前后缀为a ,不重复的部分为ba,所以你只需要先输出t(aba) ...

  7. 哈理工OJ 1630 网线 【建图+Prime算法】

    题目链接:http://acm.hrbust.edu.cn/index.php?m=ProblemSet&a=showProblem&problem_id=1630 网线 Time L ...

  8. hrbust 1424 哈理工oj 1424 Hrbust的校车【水题】【思维】

    Hrbust的校车 Time Limit: 1000 MS Memory Limit: 65536 K Total Submit: 573(179 users) Total Accepted: 176 ...

  9. `Computer-Algorithm` 最小生成树MST,Prim,Kruskal,次小生成树

    Contents 最小生成树 Algorithm Prim Code Kruskal Prim&KruskalPrim \& KruskalPrim&Kruskal算法的性质 ...

  10. 哈理工 oj——队列列列列!!!!!

    队列列列列!!!!! Time Limit: 1000 MS Memory Limit: 32768 K Total Submit: 337(148 users) Total Accepted: 15 ...

最新文章

  1. HTTP的 Basic 验证
  2. Java技术:SpringBoot集成FreeMarker生成word文件
  3. x230无线网卡驱动服务器版,ThinkPad X230网卡驱动
  4. Cocos2d-x 2 0 在Windows平台下的使用
  5. arduino char*转string_面试官:String长度有限制吗?是多少?还好我看过
  6. npm安装typescript
  7. 经济下行,薅点羊毛吧!
  8. tomcat 启动报错 解决办法 A child container failed duringnbsp
  9. asp.net 写入excel时,不能更新。数据库或对象为只读。
  10. python处理nc气象数据_气象数据处理——nc文件
  11. echarts---圆饼图
  12. UltraEdit,无法卸载,无法安装
  13. 微信小程序中服务器主动向小程序多个客户端发送通知消息(模板消息)的解决方法
  14. Sql语法-Oracle
  15. 注意力机制学习 BAM
  16. python print字体颜色 print背景颜色
  17. 步骤条的实现原理及AliceUI中步骤条Step的应用
  18. PL3368C、PL3368CE
  19. 如何获取sha1值和MD5值
  20. 前端那些你必须了解的知识点

热门文章

  1. eclipse中文版界面设置黑色_Eclipse设置黑色主题
  2. C盘满了怎么办?最强清理工具来了
  3. mac电脑用计算机名共享打印机,从Mac连接Windows共享打印机(2)
  4. 图解深度学习-梯度下降法优化器可视化(SGD, Momentum,Adam, Adagrad and RMSProp)
  5. 【亲测有效】无法定位链接器!请检查 tools\link.ini 中的配置是否正确的解决方案...
  6. 犀牛7基本训练学习教程 Rhino 7 Essential Training
  7. [数学建模]数学规划模型
  8. JAVA实现UDP通信
  9. 风哥Oracle数据库视频培训教程大合集(网盘下载.共18套)
  10. Cadence Allegro PCB设计准备工作图文教程【入门篇1-3】