畅通工程再续(MST)
Description
Input
每组数据首先是一个整数C(C <= 100),代表小岛的个数,接下来是C组坐标,代表每个小岛的坐标,这些坐标都是 0 <= x, y <= 1000的整数。
Output
Sample Input
2
10 10
20 20
3
1 1
2 2
1000 1000
Sample Output
oh!
#include<stdio.h>
#include<algorithm>
#include<math.h>
#define Max 0x3f3f3f3f
using namespace std;
struct island
{
double x , y ;
}land[]; int n , fa[] ;
int in ; struct edge
{
int u , v ;
double w ;
}e[*+]; void binary (island a , int key , int l , int r )
{
if ( l >= r) {
return ;
}
int mid = (l + r) / ;
binary (a , key , l , mid ) ;
binary (a , key , mid + , r ) ;
double dis = (a.x - land[mid].x) * (a.x - land[mid].x) + (a.y - land[mid].y) * (a.y - land[mid].y) ; if ( dis <= * && dis >= * ) {
e[in].u = key ;
e[in].v = mid ;
e[in].w = sqrt (dis) ;
in++ ;
}
} bool cmp (edge a , edge b)
{
return a.w < b.w ;
} int find (int x)
{
return fa[x] == x ? x : find (fa[x]) ;
} void kruskal ()
{
sort ( e + , e + in , cmp ) ;
int x , y ;
double ans = ;
for (int i = ; i < in ; i++) {
x = find (e[i].u) ;
y = find (e[i].v) ;
if ( x != y) {
ans += e[i].w ;
fa[x] = y ;
}
}
printf ("%.1f\n" , 100.0 * ans ) ;
}
int main ()
{
// freopen ("a.txt" , "r" , stdin ) ;
int T;
scanf ("%d" , &T ) ;
int x , y ;
int cnt ;
while (T--) {
in = ;//RE 's reason
cnt = ;
scanf ("%d" , &n ) ;
for (int i = ; i <= n ; i++)
fa[i] = i ;
for (int i = ; i <= n ; i++) {
scanf ("%lf%lf" , &land[i].x , &land[i].y ) ;
}
for (int i = ; i < n ; i++ ) {//建立 u , v , w
binary ( land[i] , i , i + , n + ) ;
}
//To determine whether the connectivity
for (int i = ; i < in ; i++) {
x = find (e[i].u) ;
y = find (e[i].v) ;
fa[x] = y;
}
for (int i = ; i <= n ; i++) {
if (fa[i] == i )
cnt++ ;
if (cnt > )
break ;
} for (int i = ; i <= n ; i++)
fa[i] = i ; if ( cnt > )
puts ("oh!") ;
else
kruskal () ;
}
return ;
}
每组测试前要把edge的下标in初始化,为此re
畅通工程再续(MST)的更多相关文章
- hdu-1875 畅通工程再续---MST
题目链接: https://vjudge.net/problem/HDU-1875 题目大意: 相信大家都听说一个“百岛湖”的地方吧,百岛湖的居民生活在不同的小岛中,当他们想去其他的小岛时都要通过划小 ...
- hdu1875 畅通工程再续 最小生成树并查集解决---kruskal
http://acm.hdu.edu.cn/showproblem.php?pid=1875 New~ 欢迎“热爱编程”的高考少年——报考杭州电子科技大学计算机学院关于2015年杭电ACM暑期集训队的 ...
- HDU 1875 畅通工程再续 (prim最小生成树)
B - 畅通工程再续 Time Limit:1000MS Memory Limit:32768KB 64bit IO Format:%I64d & %I64u Submit S ...
- 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 ...
- HDU1875——畅通工程再续(最小生成树:Kruskal算法)
畅通工程再续 Description相信大家都听说一个“百岛湖”的地方吧,百岛湖的居民生活在不同的小岛中,当他们想去其他的小岛时都要通过划小船来实现.现在政府决定大力发展百岛湖,发展首先要解决的问题当 ...
- 畅通工程再续--hdu1875
畅通工程再续 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Subm ...
- HDU1875 畅通工程再续 (并查集)
畅通工程再续 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Subm ...
- HDU 1875:畅通工程再续(最小生成树)
畅通工程再续 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Sub ...
随机推荐
- CodeIgniter框架中关于URL(index.php)的那些事
最近,在做自己的个人网站时,采用了轻量级的php框架CodeIgniter.乍一看上去,代码清晰简洁,MVC模型非常容易维护.开发时我采用的工具是Netbeans IDE 8.0,当然,本文的内容和开 ...
- 变量监控 指令 gt-wach
index8.html <html><head> <title>变量监控指令 gt-watch</title> <script src=" ...
- Git.Framework 框架随手记--历史原因
Git.Framework 是近几年工作的一些工作经验总结,虽不能和某些知名的框架相提并论,但是还是比较实用的.此框架经过三年多的升级和维护,已经具有较强的实用性,在此记录该框架的使用操作方式,贡献给 ...
- node的实践(项目一)
学习一门语言,我们先要学习他的基本的语法,基本的数据类型,基本的数组操作,字符串的操作,然后就是语言的特性,实现共享和降低耦合的方式,然后开始比较高级的学习(所有语言都是一样的),比如说通信方法,tc ...
- Javascript基础系列之(三)数据类型 (布尔型 Boolean)
javascript同样有布尔型,可选值,true or fasle. var marr = true ; document.write(typeof(marr) + "<br> ...
- EF,MVC相关项目请参见→
End_Test和YM_EF抽象工厂 这两个项目
- Daily Scrum – 1/7
Meeting Minutes 搞定了一个bug,单词面板滚动条的bug: 在电脑屏幕上的屏幕适配有了新思路: Progress part 组员 今日工作 Time (h) 明日计划 Time ( ...
- The first gui program by Qt
#include<QApplication> #include<QPushButton> int main(int argc, char **argv) { QAppl ...
- codevs 1835 魔法猪学院 A*寻k短路做了一个月卡死在spfa那了/(ㄒoㄒ)/~~
SPFA时点出队后一定要把在队内的标记置为false!SPFA时点出队后一定要把在队内的标记置为false!SPFA时点出队后一定要把在队内的标记置为false! 我因为这个卡了一个月大家信吗?测得时 ...
- BIEE 创建一个简单的分析(2)
步骤: 1.如果BIEE安装在本机,直接登录http://localhost:9704/analytics/ 点击右上方导航菜单中的“新建->分析” 2.选择上节创建的RPD文件中的SCOTT主 ...