hdu 1162 Eddy's picture(最小生成树,prim)
2016-06-04 09:26
429 查看
#include <stdio.h> #include <string.h> #include <math.h> #define INF 99999999 #define NUM 101 typedef struct point point; struct point { double x,y; }; point p[NUM]; int n; double map[NUM][NUM],dis[NUM]; int book[NUM]; double getDistance(point p1, point p2) { return sqrt(pow(p1.x-p2.x,2.0) + pow(p1.y-p2.y,2.0)); } void creatMap() { int i,j; for(i = 1; i <= n; ++i) for(j = i; j <= n; ++j) map[i][j] = map[j][i] = getDistance(p[i],p[j]); } double prim() { memset(book,0,sizeof(book)); int i,j,count = 0,pos; double sum = 0.0,min; for(i = 1; i <= n; ++i) dis[i] = map[1][i]; book[1] = 1; ++count; while(count < n) { min = INF; for(i = 1; i <= n; ++i) if(!book[i] && dis[i] < min) { min = dis[i]; pos = i; } book[pos] = 1; ++count; sum += dis[pos]; for(i = 1; i <= n; ++i) if(!book[i] && dis[i] > map[pos][i]) dis[i] = map[pos][i]; } return sum; } int main() { int i; while(scanf("%d",&n) != EOF) { for(i = 1; i <= n; ++i) scanf("%lf %lf",&p[i].x,&p[i].y); creatMap(); printf("%.2f\n",prim()); } return 0; }
相关文章推荐
- 1.默认构造函数和explicit关键字的使用
- zz的世界,正常人不懂
- 评价cnblogs.com的用户体验
- ssh框架开发问题
- intellij idea 2016
- Java 分支结构 - if...else/switch
- BASH内置变量
- Linux软RAID基本操作介绍
- Unity从零开始制作飞机大战
- https通讯暨SSL学习笔记思路记录
- C语言之内存操作:memset & memcpy
- iOS socket
- HDU2088JAVA2
- 引用类型-Object类型
- C与C++结构体的区别
- 第十五周实践项目阅读程序————2
- SAP医药医疗行业解决方案
- HDU2088JAVA
- 第十四周学习进度
- app系统签名