题解:洛谷 P17016 [GESP202606 八级] 线网建设
本文分享的必刷题目是从蓝桥云课、洛谷、AcWing等知名刷题平台精心挑选而来并结合各平台提供的算法标签和难度等级进行了系统分类。题目涵盖了从基础到进阶的多种算法和数据结构旨在为不同阶段的编程学习者提供一条清晰、平稳的学习提升路径。欢迎大家订阅我的专栏算法题解C与Python实现附上汇总贴算法竞赛备考冲刺必刷题C | 汇总【题目来源】洛谷P17016 [GESP202606 八级] 线网建设【题目描述】A 市有n nn座基站需要通过线网互相连接。第i ii座基站位于二维平面上坐标( x i , y i ) (x_i, y_i)(xi​,yi​)处。第i ii座基站与第j jj座基站之间的距离定义为( x i − x j ) 2 ( y i − y j ) 2 \sqrt{(x_i - x_j)^2 (y_i - y_j)^2}(xi​−xj​)2(yi​−yj​)2​。如果两座基站之间的距离不超过给定的整数l ll那么可以修建连接这两座基站的线路线路长度为基站间的距离。如果从一座基站出发经过一系列线网中的线路可以到达另一座基站则称这两座基站是互相连接的。请问使得n nn座基站两两之间都互相连接需要修建的线路总长度最小是多少如果不能修建满足条件的线网则输出Impossible。【输入】第一行两个正整数n , l n, ln,l分别表示基站数量与线路长度上限。接下来n nn行每行两个整数x i , y i x_i, y_ixi​,yi​表示基站的坐标。【输出】输出一行。如果能修建满足条件的线网则输出需要修建的最小线路总长度保留两位小数。否则输出Impossible。【输入样例】4 2 1 0 -1 -1 0 0 1 1【输出样例】3.41【核心思想】问题分析给定n nn个基站的二维坐标和一个距离上限l ll只有当两基站间欧几里得距离≤ l \leq l≤l时才能修建线路。要求使所有基站两两连通的最小线路总长度若无法连通则输出Impossible。这是一个**最小生成树MST**问题核心在于从所有可修建线路中选取总长度最小且能连接所有基站的边集。算法选择Kruskal 算法将所有有效边按长度排序用并查集维护连通性贪心选取不形成环的最短边欧几里得距离筛选先计算所有点对距离仅保留≤ l \leq l≤l的边作为候选边关键步骤读入数据读取n , l n, ln,l和基站坐标( x i , y i ) (x_i, y_i)(xi​,yi​)构建有效边集枚举所有基站对( i , j ) (i, j)(i,j)计算欧几里得距离d ( x i − x j ) 2 ( y i − y j ) 2 d \sqrt{(x_i-x_j)^2 (y_i-y_j)^2}d(xi​−xj​)2(yi​−yj​)2​若d ≤ l d \leq ld≤l则加入边集Kruskal 算法将所有有效边按长度升序排序初始化并查集每个基站自成一个连通块遍历排序后的边若两端点不在同一连通块则合并并累加边长若最终选取边数 n − 1 n-1n−1则图不连通输出结果若连通输出总长度保留两位小数否则输出Impossible时间/空间复杂度时间复杂度O ( n 2 log ⁡ n 2 ) O ( n 2 log ⁡ n ) O(n^2 \log n^2) O(n^2 \log n)O(n2logn2)O(n2logn)枚举O ( n 2 ) O(n^2)O(n2)条边排序O ( n 2 log ⁡ n ) O(n^2 \log n)O(n2logn)并查集操作近似O ( 1 ) O(1)O(1)空间复杂度O ( n 2 ) O(n^2)O(n2)存储所有有效边最小生成树与并查集的核心思想贪心选边策略Kruskal 算法基于贪心思想每次选取当前最短且不会形成环的边最终得到全局最优的最小生成树。这一策略的正确性由割性质保证连通性判定通过并查集高效维护连通块信息f i n d findfind操作带路径压缩O ( α ( n ) ) O(\alpha(n))O(α(n))近似常数时间距离筛选预处理题目限制了可修建线路的最大长度先筛选有效边避免在 MST 过程中处理不可用的边不连通判定最小生成树需要恰好n − 1 n-1n−1条边连接n nn个结点若有效边不足以形成n − 1 n-1n−1条边的生成树则图不连通适用于带约束的连通性建设问题、需要在满足限制条件下求最小连接成本的优化类问题【算法标签】#普及 #生成树【代码详解】#includebits/stdc.husingnamespacestd;#defineintlonglongconstintN505,MN*N,INF1e18;// N: 最大点数; M: 最大边数; INF: 无穷大intx[N],y[N];// x[i], y[i]: 第 i 座基站的坐标doublel;// l: 线路长度上限doubleans;// ans: 最小生成树的总长度intn,m;// n: 基站数量; m: 边数未使用intcur;// cur: 当前有效边数intp[N];// p[i]: 并查集中 i 的父节点doublew[N][N];// w[i][j]: 基站 i 和 j 之间的欧几里得距离structEdge// 边结构体{inta,b;// a, b: 边的两个端点doublew;// w: 边的长度booloperator(constEdgeE)const// 重载小于号用于按边长排序{returnwE.w;}}edges[M];// edges: 存储所有有效边intfind(intx)// 并查集查找操作带路径压缩{if(p[x]!x)p[x]find(p[x]);returnp[x];}doublekruskal()// Kruskal 算法求最小生成树{sort(edges1,edgescur1);// 按边长从小到大排序for(inti1;in;i)// 初始化并查集p[i]i;doubleres0;// res: 当前生成树的总长度intcnt0;// cnt: 已选入生成树的边数for(inti1;icur;i)// 遍历所有有效边{intaedges[i].a,bedges[i].b;// 边的两个端点doublewedges[i].w;// 边的长度afind(a),bfind(b);// 查找两个端点所在连通块的根if(a!b)// 如果不在同一连通块加入该边{p[a]b;// 合并两个连通块resw;// 累加边长到总长度cnt;// 边数加一}}if(cntn-1)// 如果边数不足 n-1图不连通returnINF;returnres;}signedmain(){cinnl;// 读入基站数量和线路长度上限for(inti1;in;i)// 读入每座基站的坐标cinx[i]y[i];for(inti1;in;i)// 初始化并查集p[i]i;for(inti1;in;i)// 枚举所有基站对计算距离并筛选有效边for(intji1;jn;j){// 计算欧几里得距离w[i][j]sqrt((x[i]-x[j])*(x[i]-x[j])(y[i]-y[j])*(y[i]-y[j]));if(w[i][j]l)// 如果距离超过上限设为无穷大不可用w[i][j]1e18;elseedges[cur]{i,j,w[i][j]};// 加入有效边集合}doubleanskruskal();// 执行 Kruskal 算法if(ans!INF)// 如果存在最小生成树printf(%.2lf\n,ans);// 输出最小总长度保留两位小数elseprintf(Impossible\n);// 图不连通输出 Impossiblereturn0;}【运行结果】4 2 1 0 -1 -1 0 0 1 1 3.41

相关新闻

锂电卷到极致后,长时储能开始“偷家“了

锂电卷到极致后,长时储能开始“偷家“了

锂电卷到极致后,长时储能开始"偷家"了 2026年,中国新型储能装机1.36亿千瓦,全球占比51.9%。锂离子电池占其中96.4%。 看上去锂电赢麻了。但如果你只看到这个数字,就错过了正在发生的第二件事。 114号文——今年1月底发布…

2026/7/23 22:47:43阅读更多 →
短剧出海成本不只看翻译单价:去字幕、配音、合成和封面都会影响预算

短剧出海成本不只看翻译单价:去字幕、配音、合成和封面都会影响预算

短剧出海成本不只看翻译单价:去字幕、配音、合成和封面都会影响预算,看起来像一个价格或排期问题,实际是在问短剧出海团队能不能把内容生产做成可复制的流程。翻译单价当然重要,但它只覆盖了本地化链路中的一小段。真正决定短剧海…

2026/7/23 22:47:43阅读更多 →
Doker背景——服务器技术架构演进之路

Doker背景——服务器技术架构演进之路

目录 概述 常见概念 基本概念 应用/系统 模块(Module)/ 组件(Component) 分布式(Distributed) 集群(Cluster) 主(Master)/ 从(Slave&…

2026/7/23 22:47:43阅读更多 →
为什么93%的AI客服项目在第3个月失败?——资深架构师曝光未公开的流程断点诊断矩阵

为什么93%的AI客服项目在第3个月失败?——资深架构师曝光未公开的流程断点诊断矩阵

更多请点击: https://kaifayun.com 第一章:AI客服项目失败率的宏观归因与行业警示 近年来,全球企业AI客服项目平均失败率持续高于68%(据Gartner 2023年AI实施追踪报告),远超其他AI应用领域。这一高失败率…

2026/7/24 0:20:09阅读更多 →
贝叶斯强化学习:原理、优势与工程实践

贝叶斯强化学习:原理、优势与工程实践

1. 贝叶斯强化学习的核心优势解析在传统强化学习中,智能体通过试错与环境交互来学习最优策略,这种方法虽然有效,但存在两个关键痛点:一是对不确定性的处理能力有限,二是样本效率低下。贝叶斯强化学习(Bayes…

2026/7/24 0:20:09阅读更多 →
高光谱图像超分辨率重建技术解析与应用

高光谱图像超分辨率重建技术解析与应用

1. 高光谱图像超分辨率重建的现状与挑战高光谱图像超分辨率重建(Hyperspectral Image Super-Resolution, HSI-SR)是遥感图像处理领域的重要研究方向。与普通RGB图像不同,高光谱图像包含数百个连续的光谱波段,能够提供丰富的地物光…

2026/7/24 0:20:09阅读更多 →
计算机毕业设计之基于.NET仓库管理系统的设计与实现

计算机毕业设计之基于.NET仓库管理系统的设计与实现

该系统充分利用MVC框架的简洁性、高效性和易用性,net语言,结合SQL Server数据库技术,构建了一个功能完善的仓库管理系统。系统涵盖了销售员、采购员、库管员、客户、供应商、货物库存、货物接收等多个核心模块,实现了货物库存的快…

2026/7/24 0:20:09阅读更多 →
计算机毕业设计之河南旅游网站的设计与实现

计算机毕业设计之河南旅游网站的设计与实现

快速发展的社会中,人们的生活水平都在提高,生活节奏也在逐渐加快。为了节省时间和提高工作效率,越来越多的人选择利用互联网进行线上打理各种事务,然后线上管理系统也就相继涌现。与此同时,人们开始接受方便的生活方式…

2026/7/24 0:20:09阅读更多 →
计算机毕业设计之基于springboot的农村医疗健康管理系统的设计与实现

计算机毕业设计之基于springboot的农村医疗健康管理系统的设计与实现

随着新世纪无纸化办公方式的普及,自动化信息处理和基于网络的信息交互方式已被广泛应用。现在很多行业基本上都是交由计算机进行管理和测试,网络与计算机已成为整个线上管理体系中的重要组成部分。虽然信息技术广泛应用和数据存取更加方便,但…

2026/7/24 0:18:09阅读更多 →
Go语言静态资源打包方案对比与实践指南

Go语言静态资源打包方案对比与实践指南

1. 项目背景与核心需求在Go语言开发中,我们经常需要处理静态资源文件的打包问题。无论是Web应用的模板文件、前端资源,还是配置文件、证书等,都需要随程序一起分发。传统做法是将这些文件与编译后的二进制文件放在同一目录下,但这…

2026/7/23 0:56:31阅读更多 →
Go语言实现高性能LDAP认证服务的架构与实践

Go语言实现高性能LDAP认证服务的架构与实践

1. 项目背景与核心价值LDAP(轻量级目录访问协议)作为企业级身份认证的黄金标准,已经服务了超过80%的财富500强公司。我在金融科技领域实施统一认证体系时,发现传统Java方案存在启动慢、内存占用高等痛点。而Go语言凭借其协程并发模…

2026/7/23 0:56:31阅读更多 →
【AI面试官实战指南】:用ChatGPT模拟10类高频技术岗面试,3天提升应答精准度92%

【AI面试官实战指南】:用ChatGPT模拟10类高频技术岗面试,3天提升应答精准度92%

更多请点击: https://intelliparadigm.com 第一章:AI面试官实战指南的核心价值与适用场景 AI面试官并非替代人类HR的“黑箱工具”,而是以可解释、可审计、可迭代的方式,赋能招聘全链路的关键基础设施。其核心价值在于将主观经验沉…

2026/7/23 0:56:31阅读更多 →
我的编程之路:第一篇博客

我的编程之路:第一篇博客

大家好,我是一名编程初学者,同时这也是我编程学习之路上的第一篇博客。在这里,我想要向大家介绍我的一些想法和规划。a.自我介绍我是一个刚刚接触编程的新手,目前在学习c语言,我对编程世界充满了强烈的好奇。当然&…

2026/7/24 0:00:06阅读更多 →
【LeetCode 54】螺旋矩阵

【LeetCode 54】螺旋矩阵

问题描述: 解法: 1、模拟(参考自【LeetCode 54】螺旋矩阵-CSDN博客) int *spiralOrder(int **matrix, int matrixSize, int *matrixColSize, int *returnSize) {static const int dirs[4][2] {{0, 1}, {1, 0}, {0, -1}, {-1, …

2026/7/24 0:00:06阅读更多 →
2026 WAIC:模型隐身、智能体疯野,厂商竞赛聚焦办公场景与商业闭环

2026 WAIC:模型隐身、智能体疯野,厂商竞赛聚焦办公场景与商业闭环

知春路不相信模型领先今年WAIC大会,昔日AI六小龙来了五家,分别是Kimi、阶跃星辰、Minimax、百川智能、零一万物。连放弃基模的百川和零一万物都来了,唯一缺席的竟是近几个月来风光无限的智谱。(DeepSeek一直不参加)WAI…

2026/7/24 0:00:06阅读更多 →
YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

如果你在部署 YOLOv8 时,发现推理速度只有可怜的 1-2 FPS,而别人的演示视频却能跑到 30 FPS 以上,那么问题很可能不在模型本身,而在于你的整个处理链路。很多开发者拿到一个训练好的 YOLOv8 模型后,会直接使用官方示例…

2026/7/23 22:58:43阅读更多 →
Coze与Dify对比指南:低代码AI应用开发从入门到实战

Coze与Dify对比指南:低代码AI应用开发从入门到实战

1. 从零到一:为什么你需要了解 Coze 和 Dify?如果你对 AI 应用开发感兴趣,但一看到“大模型”、“智能体”、“工作流”这些词就头疼,觉得门槛太高,那这篇文章就是为你准备的。很多开发者,包括我自己&#…

2026/7/23 18:58:18阅读更多 →
AI生图工具怎么选?2026年6月版实测对比

AI生图工具怎么选?2026年6月版实测对比

做自媒体的朋友应该都有体会:配图一直是个让人头疼的问题。2026年,AI生图工具已经非常成熟了,但工具太多反而不知道怎么选。以下是截至2026年6月我对主流AI生图工具的实测对比。Midjourney V8.1:速度之王2026年6月11日&#xff0c…

2026/7/23 18:58:18阅读更多 →