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

最小生成树(MST问题)

最小生成树(MST问题)

(稀疏图)Prim算法

使用邻接矩阵存图,以 \(\mathcal{O}(N^2+M)\) 的复杂度计算,思想与 \(\tt djikstra\) 基本一致。

const int N = 550, INF = 0x3f3f3f3f;
int n, m, g[N][N];
int d[N], v[N];
int prim() {ms(d, 0x3f); //这里的d表示到“最小生成树集合”的距离int ans = 0;for (int i = 0; i < n; ++ i) { //遍历 n 轮int t = -1;for (int j = 1; j <= n; ++ j)if (v[j] == 0 && (t == -1 || d[j] < d[t])) //如果这个点不在集合内且当前距离集合最近t = j;v[t] = 1; //将t加入“最小生成树集合”if (i && d[t] == INF) return INF; //如果发现不连通,直接返回if (i) ans += d[t];for (int j = 1; j <= n; ++ j) d[j] = min(d[j], g[t][j]); //用t更新其他点到集合的距离}return ans;
}
int main() {ms(g, 0x3f); cin >> n >> m;while (m -- ) {int x, y, w; cin >> x >> y >> w;g[x][y] = g[y][x] = min(g[x][y], w);}int t = prim();if (t == INF) cout << "impossible" << endl;else cout << t << endl;
} //22.03.19已测试

(稠密图)Kruskal算法

平均时间复杂度为 \(\mathcal{O}(M\log M)\) ,简化了并查集。

struct DSU {vector<int> fa;DSU(int n) : fa(n + 1) {iota(fa.begin(), fa.end(), 0);}int get(int x) {while (x != fa[x]) {x = fa[x] = fa[fa[x]];}return x;}bool merge(int x, int y) { // 设x是y的祖先x = get(x), y = get(y);if (x == y) return false;fa[y] = x;return true;}bool same(int x, int y) {return get(x) == get(y);}
};
struct Tree {using TII = tuple<int, int, int>;int n;priority_queue<TII, vector<TII>, greater<TII>> ver;Tree(int n) {this->n = n;}void add(int x, int y, int w) {ver.emplace(w, x, y); // 注意顺序}int kruskal() {DSU dsu(n);int ans = 0, cnt = 0;while (ver.size()) {auto [w, x, y] = ver.top();ver.pop();if (dsu.same(x, y)) continue;dsu.merge(x, y);ans += w;cnt++;}assert(cnt < n - 1); // 输入有误,建树失败return ans;}
};
http://www.jsqmd.com/news/21166/

相关文章:

  • 常见概念
  • 单源最短路径(SSSP问题)
  • CNCF项目记录2025-10
  • 代理
  • 双碳目标下,MyEMS 为何成为制造企业的 “刚需工具”?
  • 树上路径交
  • 10.23总结
  • 关于 vue项目 代理的坑;baseURL必须为空;代理才会生效
  • 点分治 / 树的重心
  • 10.21总结
  • 最近公共祖先 LCA
  • 题解:P3343 [ZJOI2015] 地震后的幻想乡
  • 暂存:P14214 [COI 2010] 圆圈 / KOLO
  • 树论大封装(直径+重心+中心)
  • QMPlayer2解析
  • 2025年10月广州单位办公室搬家公司全景解析报告,基于专业测评的技术、性能及市场优势深度分析
  • 书评-谋杀黄昏
  • 徐州信息技术服务管理体系认证渠道口碑榜:聚焦机构资质、服务案例及合规性评估
  • 完整教程:【汽车篇】AI深度学习在汽车零部件外观检测——铝铸件中的应用
  • 附加数据文件失败:操作系统错误 5:“5(拒绝访问。)”。 CREATE DATABASE 失败。无法创建列出的某些文件名
  • 20251024- 使用shell脚本分库定时备份MySQL数据
  • 权威调研榜单:东莞工厂装修公司OP3榜单好评深度解析
  • 【Linux】倒计时和进度条完成
  • 2025年口碑好的FPC离型纸,环氧胶离型纸推荐TOP生产厂家
  • 2025年口碑好的数字地磅,电子汽车衡地磅厂家推荐及选择建议
  • 权威调研榜单:四氟换热器生产厂家TOP3榜单好评深度解析
  • 2025年口碑好的食品级贴体盒,榴莲贴体盒实力源头
  • 2025年热门的魔方智能柜,黑金刚智能柜厂家推荐及选择指南
  • 2025年10月进口艺术漆厂家全景解析报告,基于专业测评的技术、性能及市场优势深度分析
  • 2025 年漆包线厂家最新推荐榜,技术实力与市场口碑深度解析,筛选优质品牌助力采购决策