当前位置: 首页 > news >正文

洛谷P3366 【模板】最小生成树题解

1.原题和原题链接

原题链接

P3366 【模板】最小生成树

题目描述

如题,给出一个无向图,求出最小生成树,如果该图不连通,则输出orz

输入格式

第一行包含两个整数N , M N,MN,M,表示该图共有N NN个结点和M MM条无向边。

接下来M MM行每行包含三个整数X i , Y i , Z i X_i,Y_i,Z_iXi,Yi,Zi,表示有一条长度为Z i Z_iZi的无向边连接结点X i , Y i X_i,Y_iXi,Yi

输出格式

如果该图连通,则输出一个整数表示最小生成树的各边的长度之和。如果该图不连通则输出orz

输入输出样例 #1

输入 #1

4 5 1 2 2 1 3 2 1 4 3 2 3 4 3 4 3

输出 #1

7

说明/提示

数据规模:

对于20 % 20\%20%的数据,N ≤ 5 N\le 5N5M ≤ 20 M\le 20M20

对于40 % 40\%40%的数据,N ≤ 50 N\le 50N50M ≤ 2500 M\le 2500M2500

对于70 % 70\%70%的数据,N ≤ 500 N\le 500N500M ≤ 10 4 M\le 10^4M104

对于100 % 100\%100%的数据:1 ≤ N ≤ 5000 1\le N\le 50001N50001 ≤ M ≤ 2 × 10 5 1\le M\le 2\times 10^51M2×1051 ≤ Z i ≤ 10 4 1\le Z_i \le 10^41Zi1041 ≤ X i , Y i ≤ N 1\le X_i,Y_i\le N1Xi,YiN

样例解释:

所以最小生成树的总边权为2 + 2 + 3 = 7 2+2+3=72+2+3=7

2.主要思路

这道题是最小生成树的模板题,所以我们可以用Kruskal 算法+并查集解决。
首先我们需要明确题目的要求:找无向图中连接所有节点、总权值最小的边集,不连通就输出orz。Kruskal 算法的核心就是贪心:先把所有边按权值从小到大排序,再依次选则边,用并查集判断两点是否连通,不连通就选这条边,合并集合。
我的代码实现主要分为三步:一是初始化并查集,每个节点自己是父节点;二是排序所有边,保证从短边开始选;三是遍历边,用find找根节点,不同根就合并,累加权值,统计选边数。
最后判断:选够n-1条边就是连通的,那么就输出总权值;否则输出orz。

3.AC代码

#include<bits/stdc++.h>usingnamespacestd;intn,m,fa[200005],s=0,sum=0;structshu{intx,y,z;}a[200005];boolcmp(shu c,shu v){returnc.z<v.z;}intfind(intx){if(fa[x]==x)returnx;elsereturnfa[x]=find(fa[x]);}intmain(){cin>>n>>m;for(inti=1;i<=n;i++)fa[i]=i;for(inti=1;i<=m;i++){cin>>a[i].x>>a[i].y>>a[i].z;}sort(a+1,a+m+1,cmp);for(inti=1;i<=m;i++){intx1=find(a[i].x);inty1=find(a[i].y);if(x1!=y1){fa[x1]=y1;s+=1;sum+=a[i].z;}if(s==n-1)break;}if(s<n-1)cout<<"orz";elsecout<<sum;return0;}

以上就是本篇全部内容,感谢浏览!

http://www.jsqmd.com/news/915949/

相关文章:

  • C语言字符串格式化输出:%s精度控制与安全实践
  • EliSpot 技术:疫苗研发不可或缺的核心工具
  • TegraRcmGUI深度解析:Switch注入工具的三大核心原理与实战验证指南
  • 上海湘峰图文制作:普陀上海企业文化墙制作公司有哪些 - LYL仔仔
  • 从标准库到HAL库:一个STM32初学者的真实踩坑与避坑指南(附江科协视频推荐)
  • 2026年国内水晶装饰建材采购指南:隔音玻璃砖与热熔艺术水晶砖深度评测 | K9高透水晶砖水晶柱装饰水晶挂片背景墙工程水晶定制源头工厂全国服务 - 企业品牌优选推荐官
  • 基于边缘计算与Bun运行时构建高性能新闻聚合系统架构实践
  • 北京金发钹祥金属材料贸易:靠谱的北京不锈钢焊接公司 - LYL仔仔
  • WorkshopDL终极指南:无需Steam客户端下载创意工坊资源的完整方案
  • 告别卡顿!Unity 2020.3 LTS安卓高刷屏适配指南:从Activity入手搞定帧率与刷新率同步
  • 乌鲁木齐黄金上门回收平台对比2026 - 黄金回收
  • 《B4500 [GESP202603 三级] 凯撒密码》
  • 别再乱拖控件了!VisionPro 9.0项目维护指南:用CogToolBlock和C#脚本让算法结构更清晰
  • 区块链与第四次工业革命融合:构建可信数据协作新范式
  • Kubernetes 控制器(Controller)详解【20260530】001篇
  • 2026年济南市CPPM报名十大核心问题全流程答疑 - 众智商学院课程中心
  • 2026年厦门市CPPM报名十大核心问题全流程答疑 - 众智商学院课程中心
  • 2026四川文化艺术学院报考指南:哪些专业就业率高? - 品牌2025
  • Web3技术路线之争:从不可能三角到应用范式,开发者如何选择?
  • 2026年4月中封袋生产商推荐,聚酯尼龙袋/包装袋/中封袋/八边封包装袋/三边封包装袋,中封袋订做厂家口碑推荐 - 品牌推荐师
  • 手把手教你用ntdsutil命令,把辅域控扶正成主域控(Windows Server 2022实战)
  • OEXN平台:信息披露与运营规范性的评测参考
  • AI五百年:从技术范式转移到文明形态重塑的终极思考
  • 2026年4月国内评价好的智能驿站体测亭品牌选哪家,儿童体适能跑酷/AI智慧公园智慧步道,智能驿站体测亭实力厂家哪家权威 - 品牌推荐师
  • 无锡博弈长居装饰全渠道联系方式汇总|无锡江阴装修咨询一键直达 - 商业新知
  • Python小红书数据采集终极指南:xhs库完整使用教程与实战应用
  • 安徽诚鑫物资回收:安徽专业承接电缆回收公司 - LYL仔仔
  • Web3开发者与创作者效率提升:8个实战工作流优化技巧
  • 新规发布:职称评审需有高水平论文!8款AI外文论文工具录用 - 逢君学术-AI论文写作
  • Kubernetes 控制器(Controller)详解【20260530】002篇