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. POJ 2431Expedition

    Description A group of cows grabbed a truck and ventured on an expedition deep into the jungle. Bein ...

  2. python 安装模块

    python安装模块的方法很多,在此仅介绍一种,不需要安装其他附带的pip等,python安装完之后,配置环境变量,我由于中英文分号原因,环境变量始终没能配置成功汗. 1:下载模块的压缩文件解压到任意 ...

  3. linux errno使用

    errno详解 http://blog.csdn.net/wang_517766334/article/details/7561495 #include <errno.h> 就可以直接打印 ...

  4. pythonchallenge 解谜

    所有代码均使用python 3.5.1 版本 最近在学python,闲来无事觉得这个解谜还挺有意思. 解谜网址  http://www.pythonchallenge.com/ 接下来会写破解教程~

  5. C语言中定义全局变量

    (1)在C语言的头文件中定义变量出现的问题 最好不要傻嘻嘻的在头文件里定义什么东西.比如全局变量: /*xx头文件*/ #ifndef  _XX_头文件.H #define  _XX_头文件.H in ...

  6. SQL SERVER 合并重复行,行列转换

    引用自:http://www.cnblogs.com/love-summer/archive/2012/03/27/2419778.html sql server2000 里面如何实现oracle10 ...

  7. 给备战NOIP 2014 的战友们的10条建议

    应老胡要求,要写10条建议= = begin 1. 注意文件关联 比如 halt 前要close(input); close(output); 还有就是一定要打这两句话= = 2. 快排,大家都懂得. ...

  8. p4lang/switch make bm-switchsai 出现内存不足导致的Error

    报错如下: Compiling : bm::dc.cpp g++: internal compiler error: Killed (program cc1plus) Please submit a ...

  9. XSS漏洞

    跨站脚本攻击(也称为XSS)指利用网站漏洞从用户那里恶意盗取信息 坚决不要相信任何用户输入并过滤所有特殊字符.这样既可消灭绝大部分的XSS攻击.另一个建议是输出页面时将 < 和 > 变换成 ...

  10. SQL PRIMARY KEY 约束\SQL FOREIGN KEY 约束\SQL CHECK 约束

    SQL PRIMARY KEY 约束 PRIMARY KEY 约束唯一标识数据库表中的每条记录. 主键必须包含唯一的值. 主键列不能包含 NULL 值. 每个表都应该有一个主键,并且每个表只能有一个主 ...