NYOJ 1875
2016-01-26 22:03
375 查看
畅通工程再续
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 21704 Accepted Submission(s): 6860
[align=left]Problem Description[/align]
相信大家都听说一个“百岛湖”的地方吧,百岛湖的居民生活在不同的小岛中,当他们想去其他的小岛时都要通过划小船来实现。现在政府决定大力发展百岛湖,发展首先要解决的问题当然是交通问题,政府决定实现百岛湖的全畅通!经过考察小组RPRush对百岛湖的情况充分了解后,决定在符合条件的小岛间建上桥,所谓符合条件,就是2个小岛之间的距离不能小于10米,也不能大于1000米。当然,为了节省资金,只要求实现任意2个小岛之间有路通即可。其中桥的价格为 100元/米。
[align=left]Input[/align]
输入包括多组数据。输入首先包括一个整数T(T <= 200),代表有T组数据。
每组数据首先是一个整数C(C <= 100),代表小岛的个数,接下来是C组坐标,代表每个小岛的坐标,这些坐标都是 0 <= x, y <= 1000的整数。
[align=left]Output[/align]
每组输入数据输出一行,代表建桥的最小花费,结果保留一位小数。如果无法实现工程以达到全部畅通,输出”oh!”.
[align=left]Sample Input[/align]
2
2
10 10
20 20
3
1 1
2 2
1000 1000
[align=left]Sample Output[/align]
1414.2
oh!
//最小生成树
#include<cstdio> #include<cstring> #include<cmath> #include<algorithm> using namespace std; int n,m; int per[110]; struct node { int u,v; double cost; }; node a[10010],b[10010]; int cmp(node a,node b) { return a.cost<b.cost; } int find(int x) { int r=x; while (r!=per[r]) r=per[r]; per[x]=r; return r; } int un(int x,int y) { int fx=find(x); int fy=find(y); if (fx==fy) return 0; if (fx<fy) per[fy]=fx; else per[fx]=fy; return 1; } int main() { scanf ("%d",&n); while (n--) { scanf ("%d",&m); int i,j; for (i=0;i<m;i++) scanf ("%d%d",&a[i].u ,&a[i].v ); for (i=1;i<=m;i++) per[i]=i; int k=0; for (i=0;i<m;i++) { for (j=0;j<i;j++) { b[k].u =i; b[k].v =j; b[k].cost = sqrt((a[i].u -a[j].u )*(a[i].u -a[j].u)+(a[i].v -a[j].v )*(a[i].v -a[j].v )); k++; } } sort(b,b+k,cmp); int ans=0; double sum=0.0; for (i=0;i<k;i++) { if (b[i].cost >=10&&b[i].cost <=1000&&un(b[i].u,b[i].v)) { ans++; sum+=b[i].cost; } if (ans==m-1) break; } if (ans==m-1) printf ("%.1lf\n",sum*100); else printf ("oh!\n"); } return 0; }
相关文章推荐
- Shell Script 学习 day_2 指令sed
- shell脚本获取当前脚本所在位置
- JavaScript Web云平台OS.js介绍
- sublime text 3
- FragmentStatePagerAdapter与FragmentPagerAdapter的区别
- Django模型操作
- 实践中学习vim之按键序列映射
- PC端扫码实现微信联合登录
- 【NYOJ】[56]阶乘因式分解(一)
- POJ 3126 (BFS)
- Apache Commons 工具类介绍及简单使用
- JavaScript中函数有无括号()的区别
- 刚开始学习6410的经验之谈
- Ugly Number的三道题
- The Java™ Tutorials — Generics :Generics, Inheritance, and Subtypes 泛型,继承和子类型
- Flask 打印动态url内容
- HDU 1003 Max Sum (最大子序列的和)
- spring常用的工具类
- HDU 3835 R(N)
- Linux内核调试工具: Crash - 1