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. spring的Scheduled(定时任务)和多线程

    一.前言 在我们日常的开发中,经常用到数据同步的更新,这时我们采用的是spring的定时任务和java的多线程进行数据的更新,进行时实的服务调用. 二.实现思路            1.创建线程类 ...

  2. HttpPostedFile类的使用方法

    HttpPostedFile注意事项: (1)    HttpPostedFile提供对客户端已上载的单独文件的访问. (2)    对于客户端已上载的文件,最好先保存到服务器,再访问:而不是直接访问 ...

  3. About_PHP_函数

    关于验证码的完善: //生成干扰线 $posLineX1 = rand(12,50); $posLineX2 = rand(50,110); $posX = rand(10,50); for($i=0 ...

  4. FP error code老是忘记的看这里:只给出最常用的几个。

    把常见的几个记牢,不要在比赛时纠结. 错误2:输入文件未找到. 错误106:数据读入的格式错误,往往是读入语句出错. 错误200:被零除. 错误201:范围检查错误,数组越界. 错误202:栈溢出. ...

  5. Unity学习疑问记录之脚本生命周期

    总的来说unity的脚本生命周期分几个部分:编辑→初始化→游戏逻辑→渲染→GUI→Teardown首先是Reset,顾名思义:重置.在什么情况下调用呢?1.用户第一次添加组件时.2用户点击见组件面板上 ...

  6. 返回数据方法DeaCacheCommand,由CRL自动实现

    越来越多的人学起了前端,或许部分的初衷仅是它简单易上手以及好找工作,毕竟几年前只会个html和css就能有工作,悄悄告诉泥萌,这也是博主一年前的初衷 还好numpy, scikit-learn都提供了 ...

  7. 【emWin】例程四:显示文本

    实验指导书及代码包下载: http://pan.baidu.com/s/1jHOYdqm

  8. ComboSelect 下拉筛选

    Jquery Combo Select下拉筛选 http://www.dowebok.com/179.html

  9. Tomcat与Jre绿色环境配置(生产环境)

    Tomcat与Jre绿色环境配置(生产环境) 博客分类: Apache Java jreapachetomcat  Tomcat运行时需要jre的支持,一般有两种方式,一种是用jdk带的jre,另一种 ...

  10. 记一次程序排错与std::getline

    今天忙活了半个下午,查找正式环境上面一个程序的问题.这个程序的作用是监控文件夹,处理每一个文件,分析每个文件的每行记录,然后将这个文件拆分成两个结果文件投放到另外两个不同的目录下面去,当处理完这个文件 ...