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

最小生成树- # 最大边最小且总边权值最大的生成树

题目描述

给定一个无向连通图,包含 \(N\) 个顶点和 \(M\) 条边。每条边有一个权值 \(V\)。需要找到一个生成树,满足以下条件:

  1. 最大边权值尽可能小:生成树中所有边的权值最大值在所有可能的生成树中是最小的。
  2. 总边权值和尽可能大:在满足条件 1 的前提下,生成树的所有边的权值之和尽可能大。

输出满足条件的生成树的总边权值和。

输入格式

第一行输入两个正整数 \(N\)\(M\),分别表示顶点数和边数。

  • \(1 \leq N \leq 10^5\)
  • \(1 \leq M \leq 2 \times 10^5\)

接下来 \(M\) 行,每行三个整数 \(A\)\(B\)\(V\),表示顶点 \(A\) 和顶点 \(B\) 之间有一条权值为 \(V\) 的无向边。

  • \(1 \leq A, B \leq N\)
  • 权值 \(V\) 的范围为 int 范围内的整数(可能为负数)

输入数据保证图是连通的。

输出格式

输出一个整数 \(R\),表示满足条件的生成树的边权值总和。

输入样例

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

输出样例

9

算法

  1. 先满足:最大边最小:按边权升序排序,运行 Kruskal 算法构建最小生成树。记录使得图第一次连通的那条边的权值,记为 limit。这就是最小可能的最大边权值。

  2. 可用边:收集所有权值 ≤ limit 的边。

  3. 再满足:总边权值最大的生成树。 将这些可用边按权值降序排序,再次运行 Kruskal 构建生成树。

#include <bits/stdc++.h>
using namespace std;
int n,m,Fa[100002];
struct node{int x,y,v;bool operator<(const node &T)const{return v<T.v;}
}edge[200002];
bool cmp(node &T1,node &T2) {return T1.v>T2.v;
}
int GetFa(int k) {if (k==Fa[k]) return k;return Fa[k]=GetFa(Fa[k]);
}
int main(){cin>>n>>m;for (int i=1;i<=m;i++)scanf("%d%d%d",&edge[i].x,&edge[i].y,&edge[i].v);sort(edge+1,edge+1+m);int k=1;int cnt=1;for (int i=1;i<=n;i++) Fa[i]=i;for (;k<=m;k++) {int fx,fy;fx=GetFa(edge[k].x);fy=GetFa(edge[k].y);if (fx!=fy) {cnt++;Fa[fy]=fx;if (cnt==n) break;}}while (k<m && edge[k].v==edge[k+1].v) k++;sort(edge+1,edge+1+k,cmp);for (int i=1;i<=n;i++) Fa[i]=i;long long Ans=0;cnt=1;for (int i=1;i<=k;i++) {int fx,fy;fx=GetFa(edge[i].x);fy=GetFa(edge[i].y);if (fx!=fy) {cnt++;Fa[fy]=fx; Ans+=edge[i].v;if (cnt==n) break;}}cout<<Ans<<endl;return 0;
}
http://www.jsqmd.com/news/601932/

相关文章:

  • Stable Diffusion Videos实战案例:从“蓝莓意面“到“草莓意面“的魔法变身终极指南
  • 2026年潍坊靠谱财务公司排名,售后完善的财务品牌公司盘点 - myqiye
  • 跳跃游戏II-leetcode
  • 2026年全国玻璃钢桥架/不锈钢桥架公司甄选 覆盖多区域且服务完善 - 深度智识库
  • 终极指南:如何在Neovim中配置conform.nvim与Ruff实现Python代码格式化
  • Prescan8.5 百度网盘资源获取与详细安装破解指南
  • 分享校准设备用金属箔电阻生产厂家,选哪个品牌 - 工业品网
  • jenkins发布报gradle error in opening zip file解决
  • 2026年昆明欧式婚纱照推荐,为您揭秘优质摄影公司排名 - mypinpai
  • 别只当工具人!深入理解CRC32碰撞原理,让你在CTF中自己写爆破脚本
  • 终极PeerJS Server性能优化指南:高并发场景下的信令服务调优技巧 [特殊字符]
  • SEO 外链建设有哪些方法和技巧_外链建设与网站内容优化的关系是什么
  • SPSS时间序列预测实战:从数据导入到模型解读
  • ImageGlass完全指南:如何用这款免费开源工具彻底改变你的图片浏览体验
  • 万里通积分卡回收指南:使用技巧与回收方式全解析 - 团团收购物卡回收
  • Xenia Canary:终极Xbox 360模拟器完全指南
  • 如何选择最佳天虹购物卡回收方式?实用技巧大公开! - 团团收购物卡回收
  • 3步解放双手:语雀文档批量导出与本地备份全攻略
  • DSP28335程序升级实战:除了仿真器,用串口/CAN升级时如何准备.bin文件(CCS12.2版)
  • 如何配置 pangu.js 实现完美文本排版:环境变量与运行时配置终极指南
  • 3个维度解析Helix Toolkit:跨平台3D渲染框架的技术突破与商业价值
  • 用Anything to RealCharacters为游戏角色“拍照”:生成高质感真人定妆照
  • Sensey传感器优化:提升手势检测精度与性能的5个技巧
  • 2026年4月最新!北上广深佛欧米茄官方售后维修服务网点全覆盖 - 速递信息
  • YOLO X Layout实战:3步搭建文档智能分析工具,小白也能搞定
  • 如何快速搭建Xbox 360模拟器:3步完成安装配置的终极指南
  • 如何快速扩展我的电视·〇:自定义视频源与功能集成完全指南
  • 超越安装:体验快马平台AI辅助开发,让智能模型实时为你解释代码与提供优化建议
  • Grimoire:终极书签管理器 - 为巫师打造的神奇知识宝库
  • 数字电路设计终极指南:用Logisim-Evolution从零搭建你的第一个逻辑系统