HEU Tunnels(常规最小生成树)
来源:互联网 发布:海口seo 编辑:程序博客网 时间:2024/04/30 23:34
注意数据类型,使用double!
#include <cstdio>#include <cmath>#include <cstring>const int N = 110;struct Node { double x, y;}point[N];int n;double g[N][N];const double INF = 10000000000.0;const double eps = 1e-9;double prim() { double ans = 0.0, mi; bool vis[N]; memset( vis, 0, sizeof(vis)); vis[0] = true; int v; for ( int u = 0; u < n-1; ++u ) { mi = INF; for ( int i = 0; i < n; ++i ) if ( !vis[i] && mi - g[0][i] > eps ) mi = g[0][i], v = i; ans += sqrt(mi); vis[v] = true; for ( int i = 0; i < n; ++i ) if ( !vis[i] && g[0][i] - g[v][i] > eps ) g[0][i] = g[v][i]; } return ans;}double dis( int i, int j ) { return (point[i].x - point[j].x)*(point[i].x - point[j].x) + (point[i].y - point[j].y)*(point[i].y - point[j].y);}int main(){ while ( scanf("%d", &n) != EOF && n ) { for ( int i = 0; i < n; ++i ) scanf("%lf%lf", &point[i].x, &point[i].y); for ( int i = 0; i < n; ++i ) for ( int j = i; j < n; ++j ) if ( i == j ) g[i][j] = INF; else g[i][j] = g[j][i] = dis( i, j ); printf("%.2lf\n", prim()); }}
- HEU Tunnels(常规最小生成树)
- (heu step 6.1.1)Constructing Roads(最小生成树模板题:求让n个点连通的最小费用)
- 最小生成树问题的常规分析过程
- HEU Mining Station on the Sea(最小费用最大流)
- HEU Minimum time(Dijsktra)
- 最小生成树(Prim)(普利姆最小生成树)
- 最小方差生成树(最小生成树)
- 最小生成树(prim)
- 最小生成树(Kruskal)
- HDU1863(最小生成树)
- 最小生成树(转)
- poj3925(最小生成树)
- 最小生成树(模板)
- 最小生成树(Kruskal)
- 最小生成树(Prim)
- Outlets(最小生成树)
- prim(最小生成树)
- poj2031(最小生成树)
- mini2440的移植
- hdu1303 Doubles
- 视音频一些程序小demo
- C++中强制转换
- 一位老工程师前辈的忠告
- HEU Tunnels(常规最小生成树)
- 北京联合大学csdn高校俱乐部第四期活动
- python 发送邮件
- php 调用 linux 的一点问题
- Jquery之弹出层插件FancyBox
- HEU Mining Station on the Sea(最小费用最大流)
- android之两个不同程序的彼此调用
- Hibernate 的 SessionFactory接口
- .NET 实现解析全国各大视频网站真实视频下载地址