hdu 1875 畅通工程再续(kruskal算法计算最小生成树)

网友投稿 265 2022-09-06

hdu 1875 畅通工程再续(kruskal算法计算最小生成树)

畅通工程再续

Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 18411    Accepted Submission(s): 5769

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!

Author

8600

Source

​​2008浙大研究生复试热身赛(2)——全真模拟​​

Recommend

lcy   |   We have carefully selected several similar problems for you:   ​​1233​​​  ​​​1232​​​  ​​​1863​​​  ​​​1874​​​  ​​​1102​​

最小生成树问题,两种算法prim和kruskal。在这里我用的第二种算法

第一次RE了。。原来数组太小了。。。CNN!!

分别计算n各小岛各个的距离(小于10大于1000的不要),并且存到结构体eg里面。sort根据距离从小到大排序,然后就用kruskal算法。

最后判断树根是否只有一个。

还是看代码来的实在,有简单注释

#include #include #include #include using namespace std;int fa[105],n;struct node//存贮第一次输入的坐标,一定要是浮点型的{ double x,y;}c[105];struct node1//存贮两个小岛的编号和小岛的距离{ int a,b; double l;}eg[10005];bool cmp(node1 x,node1 y)//比较函数{ return x.l=10&&temp<=1000)//如果距离大于等于10小于等于1000 { eg[k].a=i,eg[k].b=j,eg[k].l=temp; k++; } } sort(eg,eg+k,cmp);//根据距离排序 double sum=0;//计算最小生成树的和 for(int i=0;i

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:hdu 2066 一个人的旅行(dijkstra)
下一篇:文案君:喜欢的3组夏天文案!
相关文章

 发表评论

暂时没有评论,来抢沙发吧~