POJ 2560 Freckles(最小生成树)
来源:互联网 发布:mac照片导出到移动硬盘 编辑:程序博客网 时间:2024/06/04 08:48
题目大意:有n个点,并且知道它们的坐标,求连接所有点的最短路径。
题目分析:
算法:prime算法
1.任选一个点,加入树中,作为第一个树中的点。
2.取距离现有树距离最小的点,加入树中。
3.重复步骤2, 直至所有点都加入到树中。
#include <cstdio>#include <cmath>#include <iostream>using namespace std;#define INF 1 << 29int n;double map[101][101];int vis[101];double dis[101];double prim(int x) {int i, j, k;double ans = 0;for(i = 0; i < n; i ++) {vis[i] = 0;dis[i] = map[x][i];}vis[0] = 1;for(i = 1; i < n; i ++) {double min = INF;for(j = 0; j < n; j ++){if(min > dis[j] && !vis[j]) {min = dis[j];k = j;}}vis[k] = 1;ans += min;for(j = 0;j < n; j ++) {if(dis[j] > map[k][j] && !vis[j]) {dis[j] = map[k][j];}}}return ans;}int main() {int i, j;int k = 0;double x[101];double y[101]; scanf("%d", &n); for (i = 0; i < 101; i ++) for (j = 0; j < 101; j ++) map[i][j] = 0; for(i = 0; i < n; i ++) scanf("%lf%lf", &x[i], &y[i]); for(i = 0; i < n; i ++) { for(j = i + 1; j < n; j ++) { map[i][j] = map[j][i] = sqrt(double((x[i] - x[j]) * (x[i] - x[j]) + (y[i] - y[j]) * (y[i] - y[j]))); } } printf("%.2lf\n", prim(0));return 0;}
0 0
- POJ 2560 Freckles(最小生成树)
- POJ 2560 Freckles 最小生成树
- poj -2560-Freckles-最小生成树
- POJ 2560 Freckles------最小生成树(水啊)
- POJ 2560 Freckles(最小生成树-Kruskal)
- 2560 Freckles (最小生成树)
- Poj 2560 || Hdu 1162 Freckles--最小生成树
- 最小生成树Freckles
- 最小生成树 Freckles
- 10034 - Freckles(最小生成树)
- UVA10034 - Freckles(最小生成树)
- POJ 2560 Freckles 最小生成树 Kruskal+并查集使用
- uva 10034 Freckles(最小生成树Kruskal)
- UVa 10034 Freckles (最小生成树+kruskal)
- Jobdu1144 Freckles(最小生成树,Kruskal算法)
- HOJ 1811 Freckles (Prim 最小生成树)
- uva 10034 Freckles(最小生成树Kruskal)
- UVA 10034 - Freckles(最小生成树)
- (hiho一下 第十九周)线段树之查询空间最小值
- hadoop例子
- poj 1012
- 触摸机制
- elasticsearch的javaAPI之index
- POJ 2560 Freckles(最小生成树)
- java集合框架
- ActiveX控件的注册
- Atitit.Gui控件and面板----数据库区-mssql 2008 权限 配置 报表查看成员
- linux常见错误解答汇总
- Atitit.故障排除系列---php 程序网站数据库错误排除流程
- 黑马程序猿_OC之核心语法(上)
- Redis源码整体运行流程详解
- Android仿网易客户端新闻案例