最小生成树

  1. 包含所有N个节点,N-1条边
  2. 没有环
  3. 权值之和最小

下图表示一最小生成树,原图于其后面。
MST=6

原图

Prim算法
是一种贪心算法,从一个节点出发,找最小边的节点加入。

#include <iostream>
#include<vector>
#include<queue>
using namespace std;int main()
{std::cout << "Hello World!\n"; const int n = 4;vector<vector<int> > edges = {//顶点,顶点,权值{0,1,1},{0,3,3},{0,2,6},{1,3,5},{1,2,4},{2,3,2}};vector<vector<pair<int, int> > > g(n);//图for (const auto& e : edges) {g[e[0]].emplace_back(e[1], e[2]);g[e[1]].emplace_back(e[0], e[2]); }//打印 gvector<vector<pair<int, int> > >::iterator iter;for (iter = g.begin(); iter != g.end(); iter++) {cout << "层" << endl;vector<pair<int, int> > temp = *iter;vector<pair<int, int> >::iterator it;for (it = temp.begin(); it != temp.end(); it++) {cout << (*it).first << " " << (*it).second << endl;}}//优先队列priority_queue<pair<int, int> > q;//(-w,v)使得排序从小到大vector<int> seen(n);//是否位于MST中q.emplace(0, 0);//虚拟边int cost = 0;//权值for (int i = 0; i < n; ++i) {const int w = -q.top().first;const int  v = q.top().second;q.pop();if (seen[v]++) continue;//先看seen[v]是否等于0,再seen[v]++cost += w;for (const auto& p : g[v]) {if (seen[p.first]) continue;//节点已在树中,跳过q.emplace(-p.second, p.first);//新节点,进入优先级队列}}cout << cost << endl;}

最小生成树(MST)相关推荐

  1. C语言Prims求最小生成树MST的算法(附完整源码)

    C语言Prims求最小生成树MST的算法 C语言Prims求最小生成树MST的算法完整源码(定义,实现,main函数测试) C语言Prims求最小生成树MST的算法完整源码(定义,实现,main函数测 ...

  2. 图论复习——最小生成树MST

    知识点 MST的构造 Boruvka算法常用于解决这类问题:给你n个点,每个点有点权,任意两个点之间有边权,边权为两个点权用过某种计算方式得出,求最小生成树.动图 MST上的确定性和存在性问题 最小生 ...

  3. `Computer-Algorithm` 最小生成树MST,Prim,Kruskal,次小生成树

    Contents 最小生成树 Algorithm Prim Code Kruskal Prim&KruskalPrim \& KruskalPrim&Kruskal算法的性质 ...

  4. 数据结构之图的应用:最小生成树MST(prime算法和Kruskal算法)

    图的应用:最小生成树 最小生成树的定义: 最小生成树的性质: Prime算法:(贪心算法思想) Prime算法的代码实现原理: Prime算法的实现代码: Prime算法的性能: Kruskal算法: ...

  5. 最小生成树(MST)相关三题

    [SCOI2005]繁忙的都市 Link 这是一道模板题,不细讲.但是这涉及到最小生成树一个重要性质: uuu到vvv的路径中,最大值最小的一条是最小生成树上的一条路径. #include<bi ...

  6. 【HDU - 5627】Clarke and MST(最大生成树,与运算性质,最小生成树MST变形)

    题干: Clarke is a patient with multiple personality disorder. One day he turned into a learner of grap ...

  7. 【POJ - 3723】Conscription (最大生成树,最小生成树MST变形)

    题干: Windy has a country, and he wants to build an army to protect his country. He has picked up N gi ...

  8. python机器学习案例系列教程——最小生成树(MST)的Prim算法和Kruskal算法

    全栈工程师开发手册 (作者:栾鹏) python数据挖掘系列教程 最小生成树MST 一个有 n 个结点的连通图的生成树是原图的极小连通子图,且包含原图中的所有 n 个结点,并且有保持图连通的最少的边. ...

  9. POJ 3723 - Conscription ( 最大权森林 / 最小生成树 )

    题意 挑选N个女兵,M个男兵,雇佣每个人都需要支付10000元的费用,如果男a和女b存在亲密度d,只要他们其中有一个已经被选中,那么在选另一个人需要的费用为100000-d,给定R个关系,输出一个最低 ...

  10. leetcode 1489. 找到最小生成树里的关键边和伪关键边(并查集)

    给你一个 n 个点的带权无向连通图,节点编号为 0 到 n-1 ,同时还有一个数组 edges ,其中 edges[i] = [fromi, toi, weighti] 表示在 fromi 和 toi ...

最新文章

  1. Javascript绘图
  2. Unreal Engine 4 —— 异步加载关卡的实现方法及思考
  3. openresty开发系列16--lua中的控制结构if-else/repeat/for/while
  4. MvcPager帮助文档 - MvcAjaxOptions 类
  5. leetcode 1489. 找到最小生成树里的关键边和伪关键边(并查集)
  6. linux中split函数用法,Linux csplit 命令用法详解-Linux命令大全(手册)
  7. Redisson 布隆过滤器
  8. 加密芯片——摘要算法特点与应用注意事项
  9. SqlMapConfig.xml 的配置
  10. 转载]转如何理解 File's Owner 与 First Responder
  11. 【React 】基于Antd Design的RadioGroup按钮组控件封装
  12. C语言经典100道编程案例
  13. [CSS]好看的渐变色网站
  14. 二十一世纪计算|洪小文:帮助机器和人类共同学习
  15. starbound服务器文件,starbound星界边境开新档并从老存档转移物资的方法_快吧单机游戏...
  16. HIVE语法基础及实战----干货
  17. CSS(Emmet语法、复合选择器、元素显示模式、背景)
  18. 电脑win7蓝屏没有修复计算机,手把手教你win7蓝屏如何修复
  19. java运行时跟编译时的区别,欢迎大家指正
  20. ROS中,DWA算法的实现

热门文章

  1. PostCss 从0开始
  2. (笔记)Mysql命令grant on:增加新用户并控制其权限
  3. sql server2005用户权限如何设置
  4. 科普 | 12个关键词,告诉你到底什么是机器学习
  5. 差分隐私 python_主要开发语言为 Python/Rust:微软与哈佛大学合作开源差分隐私平台...
  6. java如何定义一个字符栈_Java性能优化之字符串优化处理
  7. java模态_java – 如何在另一个模态JDialog之上创建一个模态的JDialog
  8. 【Leetcode | easy】最长公共前缀
  9. 【Python】3D Axis
  10. 雅客EXCEL(4)-录入数据、超链接阻断、下拉菜单、横列转数列、alt+向下方向键、定位公式