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!

一代模板如下

AC代码:(仅供参考)

  #include<cstdio>
#include<cmath>
#include<cstring>
#include<algorithm> using namespace std; #define N 110000 int father[N]; int sum; struct no
{
int x,y;
}di[N]; struct node
{
int s,e;
double l;
}dd[N]; int Find(int n)
{
while(n!=father[n])
n=father[n]; return n;
} void Fin(int x,int y)
{
int a,b; a=Find(x);
b=Find(y); if(a!=b)
{
father[b]=a;
sum++;
}
} bool cmp(node a, node b)
{
return a.l < b.l;
} int main()
{
int t; scanf("%d",&t); while(t--)
{
int c; scanf("%d",&c); for(int i=; i<=c; i++)
father[i]=i; for(int i=; i<c; i++)
scanf("%d%d",&di[i].x, &di[i].y); if(c==)
{
printf("0.0\n");
continue;
} int k=; for(int i=; i<c; i++)
for(int j=i+; j<c; j++)
{
double mi=sqrt((double)(di[i].x-di[j].x)*(di[i].x-di[j].x)+(double)(di[i].y-di[j].y)*(di[i].y-di[j].y)); if(mi >= && mi <= )
{
dd[k].s=i;
dd[k].e=j;
dd[k].l=mi;
k++;
}
} sort(dd,dd+k,cmp); sum=;
double sun=; for(int i=; i<k; i++)
if(Find(dd[i].s) != Find(dd[i].e))
{
Fin(dd[i].s,dd[i].e);
sun+=dd[i].l;
} if(sum < c)
printf("oh!\n");
else
printf("%.1lf\n",sun*); }
return ;
}

不甘心,自己再来一

  #include<cstdio>
#include<cmath>
#include<cstring>
#include<algorithm> using namespace std; #define N 110000 int p[N], s; struct data
{
int x, y;
}v[N]; struct node
{
int a, b;
double l;
}d[N]; bool cmp(node a, node b)
{
return a.l < b.l;
} int Find(int x)
{
while(p[x] != x)
x = p[x]; return x;
} void Fin(int x, int y)
{
int a = Find(x);
int b = Find(y); if (a != b)
{
s++;
p[b] = a;
}
} int main()
{
int T;
scanf ("%d", &T); while (T--)
{
int n; scanf ("%d", &n); for (int i = ; i <= n; i++)
p[i] = i; for (int i = ; i < n; i++)
scanf ("%d %d", &v[i].x, &v[i].y); int k = ; for (int i = ; i < n; i++)
for (int j = i+; j < n; j++)
{
double mi =sqrt((double)(v[i].x - v[j].x)*(v[i].x - v[j].x) + (double)(v[i].y - v[j].y)*(v[i].y - v[j].y)); if (mi >= && mi <= )
{
d[k].a = i;
d[k].b = j;
d[k].l = mi;
k++;
}
} double num = ;
s = ;
sort(d, d+k, cmp); for (int i = ; i < k; i++)
if (Find(d[i].a) != Find(d[i].b))
{
num += d[i].l;
Fin(d[i].a, d[i].b);
} if (s < n-)
printf ("oh!\n");
else
printf ("%.1f\n", *num);
}
return ;
}

HDU - 1875 畅通工程再续的更多相关文章

  1. HDU 1875 畅通工程再续 (prim最小生成树)

    B - 畅通工程再续 Time Limit:1000MS     Memory Limit:32768KB     64bit IO Format:%I64d & %I64u Submit S ...

  2. hdu 1875 畅通工程再续(prim方法求得最小生成树)

    题目:http://acm.hdu.edu.cn/showproblem.php?pid=1875 /************************************************* ...

  3. HDU 1875 畅通工程再续 (最小生成树)

    畅通工程再续 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Subm ...

  4. HDU 1875 畅通工程再续 (最小生成树)

    畅通工程再续 题目链接: http://acm.hust.edu.cn/vjudge/contest/124434#problem/M Description 相信大家都听说一个"百岛湖&q ...

  5. HDU 1875 畅通工程再续(kruskal)

    畅通工程再续 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Sub ...

  6. HDU 1875 畅通工程再续 (Prim)

    题目链接:HDU 1875 Problem Description 相信大家都听说一个"百岛湖"的地方吧,百岛湖的居民生活在不同的小岛中,当他们想去其他的小岛时都要通过划小船来实现 ...

  7. HDU - 1875 畅通工程再续【最小生成树】

    Problem Description 相信大家都听说一个"百岛湖"的地方吧,百岛湖的居民生活在不同的小岛中,当他们想去其他的小岛时都要通过划小船来实现.现在政府决定大力发展百岛湖 ...

  8. hdu 1875 畅通工程再续(最小生成树,基础)

    题目 让人郁闷的题目,wa到死了,必须要把判断10.0和1000.0的条件放到prim函数外面去.如代码所放.... 正确的(放在prim外): //2个小岛之间的距离不能小于10米,也不能大于100 ...

  9. (step6.1.3)hdu 1875(畅通工程再续——最小生成树)

    题目大意:本题是中文题,可以直接在OJ上看 解题思路:最小生成树 1)本题的关键在于把二维的点转化成一维的点 for (i = 0; i < n; ++i) { scanf("%d%d ...

随机推荐

  1. Codeforces Round #107 (Div. 2)

    D题 并查集+组合 #include <iostream> #include <cstdio> #include <cstring> using namespace ...

  2. 转: BAT等研发团队的技术博客

    BAT 技术团队博客   1. 美团技术团队博客:  地址: http://tech.meituan.com/ 2. 腾讯社交用户体验设计(ISUX) 地址:http://isux.tencent.c ...

  3. sqlserver2008 函数1

    SQL2008 表达式:是常量.变量.列或函数等与运算符的任意组合. 1. 字符串函数 函数 名称 参数 示例 说明 ascii(字符串表达式) select ascii('abc') 返回 97 返 ...

  4. worldwind一些资料

    worldwind一些资料: http://blog.csdn.net/jk276993857/article/category/710116 http://blog.csdn.net/paul_xj ...

  5. EasyUI配置和组件

    首先在webcontent添加配置文件 新建静态或动态网站,在title的下面加入五个配置文件路径,注意:循序不能乱 <!-- 顺序不可以乱 --> <!-- 1.jQuery的js ...

  6. MySQL支持的数据类型(1)( 整数,小点,位)

      整数类型 字节 最小值 最大值 tinyint 1 有符号-128 无符号0 有符号127 无符号255 smallint 2 有符号-32768 无符号0 有符号32767 无符号65535 m ...

  7. ps 文字处理篇

    ps文字处理篇 1.对文字镂空处理并且移除到新图像上: 首先创建图层-文字编辑-横排编辑 其次 魔棒工具选择通过颜色来选择选区 右击图层-栅格化图层 删除键将选择的颜色删除留下选区- 复制粘贴到另一个 ...

  8. Socket--Java

    Server.java package socket; import java.io.BufferedReader; import java.io.DataInputStream; import ja ...

  9. 如何在CentOS配置Apache的HTTPS服务

    http://www.4byte.cn/learning/120027/ru-he-zai-centos-pei-zhi-apache-de-https-fu-wu.html

  10. 1JavaScript简介

    文档对象模型(DOM,Document Object Model)是针对XML但经过扩展用于HTML的应用程序编程接口(API,Application Programming Interface). ...