HDU - 1875 畅通工程再续
每组数据首先是一个整数C(C <= 100),代表小岛的个数,接下来是C组坐标,代表每个小岛的坐标,这些坐标都是 0 <= x, y <= 1000的整数。
一代模板如下
AC代码:(仅供参考)
1 #include<cstdio>2 #include<cmath>3 #include<cstring>4 #include<algorithm>5 6 using namespace std;7 8 #define N 1100009 10 int father[N];11 12 int sum;13 14 struct no15 {16 int x,y;17 }di[N];18 19 struct node20 {21 int s,e;22 double l;23 }dd[N];24 25 int Find(int n)26 {27 while(n!=father[n])28 n=father[n];29 30 return n;31 }32 33 void Fin(int x,int y)34 {35 int a,b;36 37 a=Find(x);38 b=Find(y);39 40 if(a!=b)41 {42 father[b]=a;43 sum++;44 }45 }46 47 bool cmp(node a, node b)48 {49 return a.l < b.l;50 }51 52 int main()53 {54 int t;55 56 scanf("%d",&t);57 58 while(t--)59 {60 int c;61 62 scanf("%d",&c);63 64 for(int i=0; i<=c; i++)65 father[i]=i;66 67 for(int i=0; i<c; i++)68 scanf("%d%d",&di[i].x, &di[i].y);69 70 if(c==1)71 {72 printf("0.0\n");73 continue;74 }75 76 int k=0;77 78 for(int i=0; i<c; i++)79 for(int j=i+1; j<c; j++)80 {81 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));82 83 if(mi >= 10 && mi <= 1000)84 {85 dd[k].s=i;86 dd[k].e=j;87 dd[k].l=mi;88 k++;89 }90 }91 92 sort(dd,dd+k,cmp);93 94 sum=1;95 double sun=0;96 97 for(int i=0; i<k; i++)98 if(Find(dd[i].s) != Find(dd[i].e))99 { 100 Fin(dd[i].s,dd[i].e); 101 sun+=dd[i].l; 102 } 103 104 if(sum < c) 105 printf("oh!\n"); 106 else 107 printf("%.1lf\n",sun*100); 108 109 } 110 return 0; 111 }
View Code
不甘心,自己再来一
1 #include<cstdio>2 #include<cmath>3 #include<cstring>4 #include<algorithm>5 6 using namespace std;7 8 #define N 1100009 10 int p[N], s; 11 12 struct data 13 { 14 int x, y; 15 }v[N]; 16 17 struct node 18 { 19 int a, b; 20 double l; 21 }d[N]; 22 23 bool cmp(node a, node b) 24 { 25 return a.l < b.l; 26 } 27 28 int Find(int x) 29 { 30 while(p[x] != x) 31 x = p[x]; 32 33 return x; 34 } 35 36 void Fin(int x, int y) 37 { 38 int a = Find(x); 39 int b = Find(y); 40 41 if (a != b) 42 { 43 s++; 44 p[b] = a; 45 } 46 } 47 48 int main() 49 { 50 int T; 51 scanf ("%d", &T); 52 53 while (T--) 54 { 55 int n; 56 57 scanf ("%d", &n); 58 59 for (int i = 0; i <= n; i++) 60 p[i] = i; 61 62 for (int i = 0; i < n; i++) 63 scanf ("%d %d", &v[i].x, &v[i].y); 64 65 int k = 0; 66 67 for (int i = 0; i < n; i++) 68 for (int j = i+1; j < n; j++) 69 { 70 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)); 71 72 if (mi >= 10 && mi <= 1000) 73 { 74 d[k].a = i; 75 d[k].b = j; 76 d[k].l = mi; 77 k++; 78 } 79 } 80 81 double num = 0; 82 s = 0; 83 sort(d, d+k, cmp); 84 85 for (int i = 0; i < k; i++) 86 if (Find(d[i].a) != Find(d[i].b)) 87 { 88 num += d[i].l; 89 Fin(d[i].a, d[i].b); 90 } 91 92 if (s < n-1) 93 printf ("oh!\n"); 94 else 95 printf ("%.1f\n", 100*num); 96 } 97 return 0; 98 }
View Code
转载于:https://www.cnblogs.com/Aa948766160/p/5749952.html
HDU - 1875 畅通工程再续相关推荐
- HDOJ 1875 HDU 1875 畅通工程再续 ACM 1875 IN HDU
MiYu原创, 转帖请注明 : 转载自 ______________白白の屋 题目地址: 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 Sub ...
- HDU 1875 畅通工程再续
传送门:http://acm.hdu.edu.cn/showproblem.php?pid=1875 简单的最小生成树 #include <iostream> #include <c ...
- HDOJ 1875 畅通工程再续
这个畅通工程还是一交就过,看来畅通工程用来入门是最好了,以后拿这些来挂就不会那么打击人了,天天开心.这里求最小生成树之前要自己构图,很简单就是求出点到点之间的距离,如果距离大于1000和小于10都视作 ...
- HDU-1857 畅通工程再续
畅通工程再续 Problem Description 相信大家都听说一个"百岛湖"的地方吧,百岛湖的居民生活在不同的小岛中,当他们想去其他的小岛时都要通过划小船来实现.现在政府决定 ...
- HDU1875 畅通工程再续【Kruskal算法+并查集】
畅通工程再续 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Sub ...
- HDOJ 1874 HDU 1874 畅通工程续 ACM 1874 IN HDU
MiYu原创, 转帖请注明 : 转载自 ______________白白の屋 题目地址: http://acm.hdu.edu.cn/showproblem.php?pid=1874 ...
- HDU 1874 畅通工程续 (Dijkstra , Floyd , SPFA, Bellman_Ford 四种算法)
畅通工程续 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1874 Problem Description 某省自从实行了很多年的畅通工程计划后,终于修 ...
- hdu 1874 畅通工程续(求最短距离,dijkstra,floyd)
题目:http://acm.hdu.edu.cn/showproblem.php?pid=1874 /************************************************* ...
最新文章
- Unity 简单示例代码和向导/Unity Aplication Block
- 新发现:高速下载Eclipse
- 2021合工大超越卷数二好题精选
- 数据量很大的排序问题 大量数据如何排序,没有做测试
- java ftp主动模式和被动模式_ftp主动模式和被动模式
- lambda中sorted排序
- C# 在自定义的控制台输出重定向类中整合调用方信息
- sql 中优化视图或sql语句的执行效率的方法
- springboot3——Email
- 用线性插值算法实现图像缩放
- java日期加一天_Java 关于日期加一天(日期往后多一天)
- CentOS6.5上增加中文字体库,确保前端WEB可以正常显示
- 电脑锁屏按什么键解锁_锁屏键除了锁屏还能干什么?这 6 个 App 带你玩转手机实体键...
- 如何将新的token发给前端比较好_前端工程师为什么要学习编译原理?
- Uniapp微信小程序视频全屏播放功能极简实现法
- iphone视图屏幕元素-像素大小 目前iphone,ipod touch 屏幕:320*480
- 《隐私政策》及《用户服务协议》
- 【问题】loadrunner运行场景时,用户卡在run状态,且退出时卡在gradual exiting状态
- 生鲜配送管理系统_升鲜宝V2.0 供应商协同系统设计思想及设计效果展现(一)...
- C++实现类似QT中的计时器QTime类(CQTime)