洛谷1265 公路修建【最小生成树】

题目https://www.luogu.org/problemnew/show/P1265

题意:有n个城市的坐标,每个城市申请和自己最近的城市建路,这之后他们就被视为一个城市。

继续下去直到所有城市都是一个城市。问最少建多少路。题目里说如果形成了环的话,就要去掉路最短的那个。

但是城市一个个请求过来,建完就变成一个城市了之后,怎么会形成环啊【反正好像这句话根本不用管】

思路:这道题的题意好奇怪。刚开始看半天搞不懂还以为要求最大生成树嘞。其实就是一个最小生成树而已。

因为点比较多,所以图就不存了,直接prim的时候用dist函数算。

注意dist函数里面,x和y原来是整型先给他们转成double。有的题目里面没关系,这道题目就WA了。还是都先注意以下吧。

 1 #include<cstdio>
 2 #include<cstdlib>
 3 #include<map>
 4 #include<set>
 5 #include<cstring>
 6 #include<algorithm>
 7 #include<vector>
 8 #include<cmath> 
 9 #include<stack>
10 #include<queue>
11 #include<iostream>
12 
13 #define inf 0x3f3f3f3f
14 using namespace std;
15 typedef long long LL;
16 typedef pair<int, int> pr;
17 
18 const int maxn = 5005;
19 int n;
20 struct node{
21     int x, y;
22 }city[maxn];
23 //double g[maxn][maxn];
24 double d[maxn];
25 bool vis[maxn];
26 double ans = 0;
27 
28 double dist(int i, int j)
29 {
30     return sqrt((double)(city[i].x - city[j].x) * (city[i].x - city[j].x) + (double)(city[i].y - city[j].y) * (city[i].y - city[j].y));
31 }
32 
33 void prim(int st)
34 {
35     vis[st] = true;
36     d[st] = 0;
37     for(int i = 1; i <= n; i++){
38         d[i] = dist(st, i);
39     }
40     for(int t = 1; t < n; t++){
41         double min = inf;
42         int minid;
43         for(int i = 1; i <= n; i++){
44             if(!vis[i] && d[i] < min){
45                 min = d[i];
46                 minid = i;
47             }
48         }
49         vis[minid] = true;
50         ans += min;
51         for(int i = 1; i <= n; i++){
52             if(d[i] > dist(minid, i)){
53                 d[i] = dist(minid, i);
54             }
55         }
56     }
57 }
58 
59 int main()
60 {
61     scanf("%d", &n);
62     memset(d, 0x3f, sizeof(d)); 
63     for(int i = 1; i <= n; i++){
64         //par[i] = i;
65         scanf("%d%d", &city[i].x, &city[i].y);
66     }
67 //    for(int i = 1; i <= n; i++){
68 //        for(int j = i + 1; j <= n; j++){
69 //            g[i][j] = g[j][i] = dist(i, j);
70 //            //printf("%lf\n", g[i][j]); 
71 //        }
72 //    }
73     
74     prim(1);
75     printf("%.2lf\n", ans);
76     return 0;
77 }

 

转载于:https://www.cnblogs.com/wyboooo/p/11118509.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。
1. 智慧监狱概述 智慧监狱的建设背景基于监狱信息化的发展历程,从最初的数字化监狱到信息化监狱,最终发展到智慧监狱。智慧监狱强调管理的精细化、监管的一体化、改造的科学化以及办公的无纸化。政策上,自2017年以来,司法部连续发布了多项指导性文件,推动智慧监狱的建设。 2. 内在需求与挑战 智慧监狱的内在需求包括数据应用与共享的不足、安防系统的单一功能、IT架构的复杂性、信息安全建设的薄弱以及IT运维的人工依赖。这些挑战要求监狱系统进行改革,以实现数据的深度利用和业务的智能化。 3. 技术架构与设计 智慧监狱的技术架构包括统一门户、信息安全、综合运维、安防集成平台和大数据平台。设计上,智慧监狱采用云计算、物联网、大数据和人工智能等技术,实现资源的动态分配、业务的快速部署和安全的主动防护。 4. 数据治理与应用 监狱数据应用现状面临数据分散和共享不足的问题。智慧监狱通过构建数据共享交换体系、数据治理工具及服务,以及基于数据仓库的数据分析模型,提升了数据的利用效率和决策支持能力。 5. 安全与运维 智慧监狱的信息安全建设涵盖了大数据应用、安全管理区、业务区等多个层面,确保了数据的安全和系统的稳定运行。同时,综合运维平台的建立,实现了IT系统的统一管理和自动化运维,提高了运维效率和系统的可靠性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值