杭电 1875 畅通工程再续【最小生成树&&Kruskal】
2015-08-11 16:05
471 查看
畅通工程再续
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 19510 Accepted Submission(s): 6116
Problem Description
相信大家都听说一个“百岛湖”的地方吧,百岛湖的居民生活在不同的小岛中,当他们想去其他的小岛时都要通过划小船来实现。现在政府决定大力发展百岛湖,发展首先要解决的问题当然是交通问题,政府决定实现百岛湖的全畅通!经过考察小组RPRush对百岛湖的情况充分了解后,决定在符合条件的小岛间建上桥,所谓符合条件,就是2个小岛之间的距离不能小于10米,也不能大于1000米。当然,为了节省资金,只要求实现任意2个小岛之间有路通即可。其中桥的价格为 100元/米。
Input
输入包括多组数据。输入首先包括一个整数T(T <= 200),代表有T组数据。
每组数据首先是一个整数C(C <= 100),代表小岛的个数,接下来是C组坐标,代表每个小岛的坐标,这些坐标都是 0 <= x, y <= 1000的整数。
Output
每组输入数据输出一行,代表建桥的最小花费,结果保留一位小数。如果无法实现工程以达到全部畅通,输出”oh!”.
Sample Input
2 2 10 10 20 20 3 1 1 2 2 1000 1000
Sample Output
1414.2 oh!
第一次是RE,原因是edge开小了。这道题是双重for循环,因此开的值至少要大于c*(c-1)。
#include<stdio.h> #include<string.h> #include<math.h> #include<algorithm> using namespace std; int per[110], c, k; double x[110], y[110]; struct node{ int u, v; double s; }; node edge[11000]; double cmp(node a, node b){ return a.s < b.s; } void init(int c){ int i; for(i = 0; i <= c; ++i){ per[i] = i; } } int find(int x){ int r = x; while(per[r] != r) r = per[r]; per[x] = r; return r; } void kruskal(){ init(c); sort(edge, edge + k, cmp); int fx, fy, ans = 1, i; double sum = 0.0; for(i = 0; i < k; ++i){ fx = find(edge[i].u); fy = find(edge[i].v); if(fx != fy){ sum += edge[i].s * 100; per[fx] = fy; ans++; } } if(ans == c) printf("%.1lf\n",sum); else printf("oh!\n"); } int main(){ int t; scanf("%d",&t); while(t--){ scanf("%d",&c); memset(x, 0, sizeof(x)); memset(y, 0, sizeof(y)); int i; for(i = 0; i < c; i++){ scanf("%lf%lf",&x[i], &y[i]); } int j; k = 0; for(i = 0; i < c - 1; ++i){ for(j = i + 1; j < c; ++j){ double l = sqrt(pow(x[i] - x[j], 2) + pow(y[i] - y[j], 2)); if(l >= 10.0 && l <= 1000.0){ edge[k].s = l; edge[k].u = i; edge[k].v = j; k++; } } } kruskal(); } return 0; }
相关文章推荐
- 22-IO流-31-IO流(File对象-构造函数&字段)
- 利用WINDOWS API函数操作文件(CreateFile、ReadFile 、MultiByteToWideChar)
- 统计和分析系统性能【IO CPU 内存】的工具集合
- iOS基础-UIKit框架-高级视图-UIPickerView-实例2:城市选择(列与列之间有关系)
- 转自CSDN----"双色球随机摇号"
- bootstrap 垂直导航 PS:一个很实用的~~布局吧~~词穷
- 弹窗之背景模糊效果
- nyoj915 +-字符串
- tar 解压缩命令详解
- JSON Accelerator
- java File 的相对路径
- hdu1233还是畅通工程【最小生成树】
- LPTSTR、LPCSTR、LPCTSTR、LPSTR的来源及意义
- 使用重写的$.ajax()统一错误处理
- tomcat6.0 安装版和解压版的内存设置
- 这100佳创新互联网公司值得你去
- tpcc-mysql测试mysql5.6 (xfs文件系统)
- Ceil函数
- spring quartz定时
- [LeetCode] Construct Binary Tree from Preorder and Inorder Traversal