HDU 1875(最小生成树)
- #include <iostream>
- #include <algorithm>
- #include <cstdio>
- #include <cmath>
- using namespace std;
- typedef struct
- {
- int a,b;
- double v;
- }node;
- typedef struct
- {
- int a,b;
- }P;
- const int maxn=;
- double ans;
- int father[maxn];
- node graph[maxn*(maxn-)/];
- P p[maxn];
- int Find(int x)
- {
- if(father[x]==x)
- return x;
- else
- {
- father[x]=Find(father[x]);
- return father[x];
- }
- }
- void Union(int x,int y,double v)
- {
- if(Find(x)!=Find(y))
- {
- ans+=v*;
- father[Find(x)]=Find(y);
- }
- return;
- }
- bool cmp(node x,node y)
- {
- if(x.v<y.v)
- return true;
- else
- return false;
- }
- int main()
- {
- double V;
- int n;
- scanf("%d",&n);
- while(n--)
- {
- ans=;
- for(int i=;i<maxn;i++)
- father[i]=i;
- int m,k;
- k=;
- scanf("%d",&m);
- for(int i=;i<m;i++)
- {
- scanf("%d%d",&p[i].a,&p[i].b);
- }
- for(int i=;i<m-;i++)
- {
- for(int j=i+;j<m;j++)
- {
- V=sqrt(pow((p[i].a-p[j].a),2.0)+pow((p[i].b-p[j].b),2.0));
- if(V<=&&V>=)
- {
- graph[k].a=i;
- graph[k].b=j;
- graph[k].v=V;
- k++;
- }
- }
- }
- sort(graph,graph+k,cmp);
- for(int i=;i<k;i++)
- Union(graph[i].a,graph[i].b,graph[i].v);
- int xx=Find();
- int flag;
- flag=;
- for(int i=;i<m;i++)
- {
- if(Find(i)!=xx)
- {
- flag=;
- break;
- }
- }
- if(flag==)
- printf("oh!\n");
- else
- printf("%.1lf\n",ans);
- }
- return ;
- }
HDU 1875(最小生成树)的更多相关文章
- hdu 1875 最小生成树 prime版
最小生成树prime版 大致的步骤 首先选取一个到集合最近的点 然后标记起在集合内部 然后更新最短距离 畅通工程再续 Time Limit: 2000/1000 MS (Java/Others) ...
- HDU 1875 最小生成树prim算法
#include<iostream> #include<cstdio> #include<algorithm> #include<cmath> #inc ...
- HDU 1875 畅通工程再续 (prim最小生成树)
B - 畅通工程再续 Time Limit:1000MS Memory Limit:32768KB 64bit IO Format:%I64d & %I64u Submit S ...
- HDU 1875 畅通工程再续 (Prim)
题目链接:HDU 1875 Problem Description 相信大家都听说一个"百岛湖"的地方吧,百岛湖的居民生活在不同的小岛中,当他们想去其他的小岛时都要通过划小船来实现 ...
- hdu 1875 畅通project再续
链接:hdu 1875 输入n个岛的坐标,已知修桥100元/米,若能n个岛连通.输出最小费用,否则输出"oh!" 限制条件:2个小岛之间的距离不能小于10米,也不能大于1000米 ...
- HDU 1233(最小生成树)
HDU 1233(最小生成树 模板) #include <iostream> #include <algorithm> #include <cstdio> usin ...
- hdu 1875 畅通工程再续(prim方法求得最小生成树)
题目:http://acm.hdu.edu.cn/showproblem.php?pid=1875 /************************************************* ...
- (最小生成树) 畅通工程再续 -- HDU --1875
链接: http://acm.hdu.edu.cn/showproblem.php?pid=1875 http://acm.hust.edu.cn/vjudge/contest/view.action ...
- HDU 1875 畅通工程再续 (最小生成树)
畅通工程再续 题目链接: http://acm.hust.edu.cn/vjudge/contest/124434#problem/M Description 相信大家都听说一个"百岛湖&q ...
随机推荐
- Linux随笔-鸟哥Linux基础篇学习总结(全)
Linux随笔-鸟哥Linux基础篇学习总结(全) 修改Linux系统语系:LANG-en_US,如果我们想让系统默认的语系变成英文的话我们可以修改系统配置文件:/etc/sysconfig/i18n ...
- Android wifi 从连接态自动断开的解决办法(dhcp导致)【转】
本文转载自:http://blog.csdn.net/DKBDKBDKB/article/details/38490201 对wifi部分的代码流程已经看了段时间,前两天终于解决了工作中遇到的一个wi ...
- Educational Codeforces Round 2 C. Make Palindrome —— 贪心 + 回文串
题目链接:http://codeforces.com/contest/600/problem/C C. Make Palindrome time limit per test 2 seconds me ...
- 使用libcurl进行HTTP GET操作
Working example how to do a GET request with libcurl and save it to a string variable for future use ...
- codeforces B. Roma and Changing Signs 解题报告
题目链接:http://codeforces.com/problemset/problem/262/B 题目意思:给出 n 个数和恰好一共要做的操作总数k.通过对n个数进行k次操作,每次操作可以把a[ ...
- js事件传播的一个疑惑
在学习事件传播的时候,发现一个问题,当时是这样子的. 我给多层元素分别绑定了冒泡和捕获事件.按道理应该先从外向内执行完所有的捕获事件,再由内向外执行所有的冒泡事件. 但是天不随人愿啊,有个元素偏偏先执 ...
- AC自动机-题目集合
AC自动机-题目集合 模板 如果你想要学习AC自动机,推荐一些学习资料. 学习可以看这篇博客 http://blog.csdn.net/niushuai666/article/details/7002 ...
- 51nod最长递增路径:(还不错的图)
一个无向图,可能有自环,有重边,每条边有一个边权.你可以从任何点出发,任何点结束,可以经过同一个点任意次.但是不能经过同一条边2次,并且你走过的路必须满足所有边的权值严格单调递增,求最长能经过多少条边 ...
- FTP:文件传输协议(指令及响应代码)
文件传输协议(FTP)使得主机间可以共享文件. FTP 使用 TCP 生成一个虚拟连接用于控制信息,然后再生成一个单独的 TCP 连接用于数据传输.控制连接使用类似 TELNET 协议在主机间交换命令 ...
- linq Foreach
lst.ForEach(item => { CbxDF1VersionItemSource.Add(item); });