题目链接:

https://vjudge.net/problem/HDU-1875

题目大意:

相信大家都听说一个“百岛湖”的地方吧,百岛湖的居民生活在不同的小岛中,当他们想去其他的小岛时都要通过划小船来实现。现在政府决定大力发展百岛湖,发展首先要解决的问题当然是交通问题,政府决定实现百岛湖的全畅通!经过考察小组RPRush对百岛湖的情况充分了解后,决定在符合条件的小岛间建上桥,所谓符合条件,就是2个小岛之间的距离不能小于10米,也不能大于1000米。当然,为了节省资金,只要求实现任意2个小岛之间有路通即可。其中桥的价格为 100元/米。

解题思路:

hdu-1863类似,也是MST加连通

 #include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int maxn = + ;
const int INF = 1e9 + ;
double Map[maxn][maxn];
double lowcost[maxn];
int mst[maxn];
int n, m;
double prim(int u)
{
double ans = ;
for(int i = ; i <= n; i++)
{
lowcost[i] = Map[u][i];
mst[i] = u;
}
mst[u] = -;
for(int i = ; i < n; i++)
{
double minn = INF - ;
int v = -;
//寻找lowcost数组里面的未加入mst的最小值
for(int j = ; j <= n; j++)
{
if(mst[j] != - && lowcost[j] < minn)
{
v = j;
minn = lowcost[j];
}
}
if(v != -)
{
mst[v] = -;
ans += lowcost[v];
for(int j = ; j <= n; j++)
{
if(mst[j] != - && lowcost[j] > Map[v][j])
{
lowcost[j] = Map[v][j];
mst[j] = v;
}
}
}
else return -1.0;//没有找到,说明不连通
}
return ans;
}
struct node
{
int x, y;
}a[maxn];
double dis(node a, node b)
{
return sqrt(1.0 * (a.x - b.x) * (a.x - b.x) + 1.0 * (a.y - b.y) * (a.y - b.y));
}
int main()
{
int T;
scanf("%d", &T);
while(T--)
{
scanf("%d", &n);
for(int i = ; i <= n; i++)
for(int j = ; j <= n; j++)Map[i][j] = INF * 1.0;
memset(lowcost, , sizeof(lowcost));
for(int i = ; i <= n; i++)
{
scanf("%d%d", &a[i].x, &a[i].y);
}
for(int i = ; i <= n; i++)
{
for(int j = i + ; j <= n; j++)
{
double d = dis(a[i], a[j]);
if(d < || d > )continue;
Map[i][j] = Map[j][i] = d;
}
}
double ans = prim();
if(ans > )printf("%.1f\n", ans * );
else printf("oh!\n");
}
return ;
}

最新文章

  1. Sharepoint学习笔记—习题系列--70-576习题解析 -(Q135-Q137)
  2. YourSQLDba设置共享路径备份
  3. 关于Linux操作系统下文件特殊权限的解释
  4. 之前可运行mongodb,后来却不行了显示Unclean shutdown detected mongodb
  5. 新服务器部署sqlserver之前的准备
  6. Django 后台定制自己的选择框删除函数
  7. Python Learning: 01
  8. DevExpress VCL Controls 2019发展路线图(No.2)
  9. FragmentXlistview
  10. ubuntu下使用crontab
  11. geotrellis使用(四十一)流水线技术
  12. windows 实用技巧
  13. Java内存泄露处理
  14. java把13位时间戳转换成&quot;yyyy-MM-dd HH:mm:ss&quot;格式,工具类
  15. Java 初/中级面试题及答案【详细】
  16. 关于datatables与jquerUI版本冲突问题
  17. 【CF839E】Mother of Dragons 折半状压
  18. L229 词汇题
  19. 模型构建&lt;2&gt;:不平衡样本集的处理
  20. 如何使用Dockerfile构建Tomcat镜像并部署war

热门文章

  1. cogs 915. 隐藏口令
  2. linux_下IP、网关、DNS地址配置
  3. RequireJS 2.0 API之配置项
  4. Exadata Smart Flash Logging工作原理
  5. P2066 机器分配 (DP+DP输出)
  6. 013 Roman to Integer 罗马数字转整数
  7. vector的学习(系统的学习)
  8. HDU 5734 A - Acperience
  9. Linux Shell简单命令
  10. Properties IO持久化