HDU_1875_畅通工程再续
畅通工程再续
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 17056 Accepted Submission(s): 5313
每组数据首先是一个整数C(C <= 100),代表小岛的个数,接下来是C组坐标,代表每个小岛的坐标,这些坐标都是 0 <= x, y <= 1000的整数。
2
10 10
20 20
3
1 1
2 2
1000 1000
oh!
#include<cstdio>
#include<cmath>
#include<algorithm>
using namespace std;
struct island
{
int x;
int y;
};
struct path
{
int a;
int b;
double dis;
};
struct island num1[110];
struct path num2[10000];
int father[110];
double sum;
bool cmp(path a,path b)
{
if(a.dis<b.dis)
return 1;
return 0;
}
int find(int x)
{
if(father[x]!=x)
father[x]=find(father[x]);
return father[x];
}
void merge(struct path xx)
{
int x,y;
x=find(xx.a);
y=find(xx.b);
if(x!=y)
{
father[x]=y;
sum+=xx.dis;
}
}
int main()
{
int t,c,i,j,cnt,cnt1;
double dist;
scanf("%d",&t);
while(t--)
{
scanf("%d",&c);
for(i=0; i<c; i++)
father[i]=i;
for(i=0; i<c; i++)
scanf("%d%d",&num1[i].x,&num1[i].y);
for(i=0,cnt=0; i<c; i++)
for(j=i+1; j<c; j++)
{
dist=sqrt((double)(num1[j].x-num1[i].x)*(num1[j].x-num1[i].x)+(num1[j].y-num1[i].y)*(num1[j].y-num1[i].y));
if(dist>=10&&dist<=1000)
{
num2[cnt].dis=dist;
num2[cnt].a=i;
num2[cnt].b=j;
cnt++;
}
}
if(cnt>=2)
sort(num2,num2+cnt,cmp); //排序注意时间复杂度,用自己写的排序(选择排序)可能会超时
sum=0;
for(i=0; i<cnt; i++)
merge(num2[i]);
for(i=0,cnt1=0; i<c; i++)
if(father[i]==i)
cnt1++;
if(cnt1==1)
printf("%.1lf\n",sum*100);
else
printf("oh!\n");
}
return 0;
}
HDU_1875_畅通工程再续的更多相关文章
- hdu_1875_畅通工程再续 prim和kruskal
这个题是个典型的最小生成树的题目,但是刚开始怎么都过不了,后来发现两种写法都有疏忽,但是prim的到目前为止不懂为什么刚开始的不对,kruskal算法,并查集的初始条件从0开始写成从1开始了,所以已知 ...
- hdu1875 畅通工程再续 最小生成树并查集解决---kruskal
http://acm.hdu.edu.cn/showproblem.php?pid=1875 New~ 欢迎“热爱编程”的高考少年——报考杭州电子科技大学计算机学院关于2015年杭电ACM暑期集训队的 ...
- 畅通工程再续(MST)
畅通工程再续 Time Limit:1000MS Memory Limit:32768KB 64bit IO Format:%I64d & %I64u Submit Statu ...
- 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 ...
随机推荐
- html5 虚拟键盘弹出挡住底部的输入框解决方案
问题描述: 我们使用 h5 做移动网站开发时,如果文本框在页面的下方,当输入信息弹出的软键盘会将输入框挡住(Android 会有这个问题,IOS会自动将整个页面上移),IOS中软键盘关闭后,页面上移的 ...
- mysql 將時間戳直接轉換成日期時間
from_unixtime()是MySQL裏的時間函數 Sql代碼 select uid,userid,username,email,FROM_UNIXTIME(addtime,'%Y年%m月%d') ...
- java创建线程的三种方式及其对照
Java中创建线程主要有三种方式: 一.继承Thread类创建线程类 (1)定义Thread类的子类.并重写该类的run方法,该run方法的方法体就代表了线程要完毕的任务.因此把run()方法称为运行 ...
- dorker 安装
http://www.docker.org.cn/book/install/install-docker-win7-win8-requirements-38.html1. 你先去下载Docker To ...
- python包格式
1 egg和wheel 前者扩展名是.egg,后者扩展名是.whl 它们都是python的模块.后者用来替换前者. wheel是轮子的意思,就是说,有了.whl包就不需要重新再造轮子了.
- 恶意IP监控
http://www.icarei.cn/fastdatav/MyDebug/readlog/error/ip191.96.249.136
- robot framework运行测试 命令行启动
...\rf_test> pybot --test test_case test_suit.robot #运行一条用例 ...\rf_test> pybot test_suit.robot ...
- CMake使用总结
总结CMake的常用命令,并介绍有用的CMake资源. CMake意为cross-platform make,可用于管理c/c++工程.CMake解析配置文件CMakeLists.txt生成Makef ...
- 2-3 原生小程序 - 项目app.json配置
App.json它其实有四五个配置,但是最重要的是pages.windows和tabbar.tabbar是做导航的处理的. 官方推荐的入门配置之一: app.json 它其实有一些字段是限制了这个格式 ...
- bzoj 1654: [Usaco2006 Jan]The Cow Prom 奶牛舞会【tarjan】
几乎是板子,求有几个size>1的scc 直接tarjan即可 #include<iostream> #include<cstdio> #include<cstri ...