hdu 4463 Outlets(图论:最小生成树)
来源:互联网 发布:oracle数据库下载安装 编辑:程序博客网 时间:2024/06/04 20:09
典型的最小生成树,直接套prim写的
题意要求是有一条边一定要加入MST中
所以我们可以先令这条边的权值为0
最后计算出来的结果再加上这条边原来的权值
代码如下:
#include <cmath>#include <cstdio>#include <iostream>#include <algorithm>#define MAXN 1010#define LL long long#define INF 0x7fffffffusing namespace std;int n;struct POS{ double x, y;}pos[MAXN];double dis[MAXN];double g[MAXN][MAXN];double prim() { int now, i, j; int minnode; double ans, minedge; for(i=1; i<=n; ++i) dis[i] = INF; now = 1; ans = 0; for(i=1; i<n; ++i) { dis[now] = -1; minedge = INF; for(j=1; j<=n; ++j) { if(now!=j && dis[j]>=0) { dis[j] = min(dis[j], g[now][j]); if(dis[j] < minedge) { minedge = dis[j]; minnode = j; } } } now = minnode; ans += minedge; } return ans; } double get_dis(int i, int j) { double tmp1 = (pos[i].x-pos[j].x)*(pos[i].x-pos[j].x); double tmp2 = (pos[i].y-pos[j].y)*(pos[i].y-pos[j].y); return sqrt(tmp1+tmp2);}int main(void) { int p, q; while(scanf("%d", &n) && n) { scanf("%d%d", &p, &q); for(int i=1; i<=n; ++i) { scanf("%lf%lf", &pos[i].x, &pos[i].y); } for(int i=1; i<=n; ++i) { for(int j=i+1; j<=n; ++j) { g[i][j] = g[j][i] = get_dis(i, j); } } double tmp = g[p][q]; g[p][q] = g[q][p] = 0.0; printf("%.2lf\n", prim()+tmp); } return 0;}
0 0
- hdu 4463 Outlets (最小生成树)
- HDU 4463 Outlets(最小生成树)
- hdu 4463 Outlets(图论:最小生成树)
- HDU-4463-Outlets -最小生成树
- HDU 4463 Outlets 最小生成树
- HDU 4463 Outlets (Kruskal 最小生成树)
- hdu 4463 Outlets(最小生成树)
- hdu 4463 Outlets(最小生成树)
- HDU 4463Outlets 最小生成树Kr~
- hdu 4463 Outlets 最小生成树
- hdu 4463 Outlets【最小生成树】水题
- Outlets(最小生成树)
- hdu 4463 Outlets(最小生成树,kruskal,前向星)
- HDU 4663 —— Outlets(最小生成树)
- Outlets 最小生成树
- HDOJ 4463 Outlets(最小生成树--prime)
- HDOJ 4463 Outlets 最小生成树
- hdu4463 Outlets 最小生成树
- webdriver 常见命令
- JSP 分页(二) ----异步一览列表和分页
- lftp出现“Fatal Error: Certificate Verification: Not Trusted”问题解决
- Orcale笔记-select语句(二)
- Android onTouch事件传递机制
- hdu 4463 Outlets(图论:最小生成树)
- Process Order API - How To Scripts
- python中logging的学习
- 从view 获取image
- kendo ui 中文视频教材
- C语言:哈夫曼树的编码与译码
- vs+openoffice
- motionevent 中的getX() 和getRawX()的区别
- js文件相互包含方法