HDU - 1875 畅通工程再续
每组数据首先是一个整数C(C <= 100),代表小岛的个数,接下来是C组坐标,代表每个小岛的坐标,这些坐标都是 0 <= x, y <= 1000的整数。
一代模板如下
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 畅通工程再续的更多相关文章
- HDU 1875 畅通工程再续 (prim最小生成树)
B - 畅通工程再续 Time Limit:1000MS Memory Limit:32768KB 64bit IO Format:%I64d & %I64u Submit S ...
- hdu 1875 畅通工程再续(prim方法求得最小生成树)
题目:http://acm.hdu.edu.cn/showproblem.php?pid=1875 /************************************************* ...
- HDU 1875 畅通工程再续 (最小生成树)
畅通工程再续 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Subm ...
- HDU 1875 畅通工程再续 (最小生成树)
畅通工程再续 题目链接: http://acm.hust.edu.cn/vjudge/contest/124434#problem/M Description 相信大家都听说一个"百岛湖&q ...
- HDU 1875 畅通工程再续(kruskal)
畅通工程再续 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Sub ...
- HDU 1875 畅通工程再续 (Prim)
题目链接:HDU 1875 Problem Description 相信大家都听说一个"百岛湖"的地方吧,百岛湖的居民生活在不同的小岛中,当他们想去其他的小岛时都要通过划小船来实现 ...
- HDU - 1875 畅通工程再续【最小生成树】
Problem Description 相信大家都听说一个"百岛湖"的地方吧,百岛湖的居民生活在不同的小岛中,当他们想去其他的小岛时都要通过划小船来实现.现在政府决定大力发展百岛湖 ...
- hdu 1875 畅通工程再续(最小生成树,基础)
题目 让人郁闷的题目,wa到死了,必须要把判断10.0和1000.0的条件放到prim函数外面去.如代码所放.... 正确的(放在prim外): //2个小岛之间的距离不能小于10米,也不能大于100 ...
- (step6.1.3)hdu 1875(畅通工程再续——最小生成树)
题目大意:本题是中文题,可以直接在OJ上看 解题思路:最小生成树 1)本题的关键在于把二维的点转化成一维的点 for (i = 0; i < n; ++i) { scanf("%d%d ...
随机推荐
- 尝试封装适用于权限管理的通用API
谈谈我对权限系统的简单理解 最近一段时间在研究权限系统,在园子里看到个很牛逼的开源的基于DDD-Lite的权限管理系统,并有幸加入了作者的QQ群,呵呵,受到了很大的影响.对于权限管理我有我自己的一些简 ...
- HTML当中特殊字符的表示
(回车换行) <br> (空格符) &(AND符号) & <(左尖括号.小于号) < >(右尖括号.大于号) > °(度) ° •(间隔符) ...
- iOS 模仿一个小项目,总结一下里边的模块
ManoBoo: 参考链接:http://www.jianshu.com/p/fd4c46c31508 这个小的项目是参考ManoBoo的简书的,链接在上方,自己在仿做的过程中,也离不开Man ...
- Join函数 及Split函数精解示例
'************************************************************************* '**模 块 名:Join函数 及Split函数精 ...
- 总结-Intellij Idea (快捷键 配置修改)
忽略大小写 输入sensitive,选择Code Completion,右边第一个下拉框,选择noneEditor 鼠标悬浮show quick docEditor Editor Tabs : Mar ...
- BZOJ 3365 Distance Statistics 点分治
这道题是一道点分治的题目,难度不大,可以拿来练手. 关键是对于找出来的重心的删除操作需要删掉这条边,这很重要. 还有每次找重心的时候,不但要考虑他的子节点的siz,还要考虑父节点的siz. 然后就A了 ...
- 自定义RecyclerView.ItemDecoration,实现RecyclerView的分割线效果
[转] 原文 自定义RecyclerView.ItemDecoration,实现RecyclerView的分割线效果 字数1598 阅读302 评论2 喜欢23 1.背景 RecyclerView ...
- js null 和 undefined
undefined是一个特殊类型,null本质上是一个对象 typeof undefined//"undefined"typeof null//"object" ...
- jquery复习笔记
Jquery基础 让一个按钮灰掉 $("button").("disabled","true"); ance desc选择器(ance代表祖 ...
- B2C电子商务系统研发——商品SKU分析和设计(二)
转:http://www.cnblogs.com/winstonyan/archive/2012/01/07/2315886.html 上文谈到5种商品SKU设计模式,本文将做些细化说明. 笔者研究过 ...