hdu-1162
来源:互联网 发布:德国淘宝店铺起名 编辑:程序博客网 时间:2024/06/05 15:51
最小生成树
//prim 求最小生成树#include <stdio.h>#include <math.h>#include <string.h>#define MAXN 105#define UPPERDIS 999999double lowcost[MAXN],vist[MAXN];double cost[MAXN][MAXN];int n;double prim(int v0){ int i, j, minone;double mindis; double ans = 0;/*用来记录最小生成树的总长度*/memset(vist, 0, sizeof(vist)); /*各点距离初始化*/ for(i = 0;i < n;i++) { lowcost[i] = cost[v0][i]; }vist[v0] = 1; for(i = 0;i < n-1;i++) { mindis = UPPERDIS; for(j = 0;j < n;j++) if(!vist[j] && mindis > lowcost[j]) { mindis = lowcost[j]; minone = j; } /*将找到的最近点加入最小生成树*/ ans += mindis; vist[minone] = 1; /*修正其他点到最小生成树的距离*/ for(j = 0;j < n;j++) if(!vist[j] && cost[minone][j] < lowcost[j]) { lowcost[j] = cost[minone][j]; } } return ans;}struct point {double x, y;}p[MAXN];double dis(point p1, point p2){return sqrt((p1.x - p2.x) * (p1.x - p2.x) + (p1.y - p2.y) * (p1.y - p2.y));}int main(){int i, j;while (~scanf("%d", &n)){for(i = 0; i < n; i++)scanf("%lf%lf", &p[i].x, &p[i].y);for(i = 0; i < n; i++)for(j = i; j < n; j++)if(j == i)cost[i][i] = 1000000.0;elsecost[i][j] = cost[j][i] = dis(p[i], p[j]);printf("%.2lf\n",prim(0));}}
0 0
- hdu 1162
- hdu 1162
- HDU 1162
- hdu 1162
- hdu-1162
- hdu 1162
- hdu 1162
- hdu 1162
- hdu 1162 prim算法
- hdu 1162(Kruskal)
- hdu 1162 prim模板
- HDU 1162 Prim
- hdu 1162 kruscal
- hdu 1162 Prim
- hdu
- hdu
- HDU
- hdu ()
- AndroidContentProvider——13
- <读书笔记>新手菜鸟1号—《数据挖掘基础教程》-2
- 04_Unity3D的输入(Input)——移动设备方向
- iOS开发学习路径的建议
- python的内存管理
- hdu-1162
- CRM图表中“超出最大记录限制。请减少记录数量”的解决方案
- Cmake编译OpenCV和如何在VS工程中配置来使用编译后的OpenCV进行跟踪调试问题
- Smack PacketReader 启动过程分析
- VMWare虚拟机提示:锁定文件失败,打不开磁盘的解决办法
- 算法导论12-1-3非递归中序遍历
- 算法导论-------------队列(queue)的简单实现
- SQL Server,Oracle,mysq l语句分页
- iOS 图片 的 聊天气泡显示 Objective-C 和 Swift,如何实现聊天软件的图片显示的剪裁后的气泡呢!!!