算法的原理:

以一个点开始,将这个点加入点集U,然后在它能到达的所有点(且未被选择过)里,选择路径权值最小的点。将这个点也加入点集U,然后在点集U中所有的点能到达的点(且未被选择过)中选择一个路径权值最小的点加入U。直到所有点都被加进去。就是最小生成树。

复杂度:

时间复杂度为O(n2)。与图中边数无关,该算法适合于稠密图。

代码:

模板题   hihocoder1097

#include<stdio.h>
#include<iostream>
#include<algorithm>
#include<string.h>
using namespace std;
const int maxn=1e3+7;
typedef long long ll;
int mat[maxn][maxn],vis[maxn],d[maxn];
int n,End,ans;
int main(){scanf("%d",&n);for(int i=1;i<=n;i++){for(int j=1;j<=n;j++)scanf("%d",&mat[i][j]);//i到j的距离}memset(d,0x3f3f3f3f,sizeof(d));//初始化memset(vis,0,sizeof(vis));d[1]=0;//第一个节点置为0for(int i=1;i<=n;i++){int End=-1;//为了求最小值for(int j=1;j<=n;j++){//找出与有效集合距离最小的点if(!vis[j]&&(End==-1||d[End]>d[j]))End=j;}ans+=d[End];//距离加上vis[End]=1;//标记访问for(int j=1;j<=n;j++){//更新其他点到有效集合的距离if(!vis[j]&&d[j]>mat[End][j])d[j]=mat[End][j];//使得d中代表的就是每个点到达有效集合的最短距离}}printf("%d",ans);return 0;
}

prime算法-最小生成树相关推荐

  1. 数据结构——最小生成树之prime算法(与最短路径之迪杰斯特拉算法很像)

    最小生成树之prime算法 ***最小生成树:一个连通图的生成树中,所有边的权值加起来最小的生成树:称为最小生成树: [简介]:Prime算法可在加权连通图里搜索最小生成树.即:所有边的权值之和为最小 ...

  2. 最小生成树(prime算法、kruskal算法) 和 最短路径算法(floyd、dijkstra)

    带权图分为有向和无向,无向图的最短路径又叫做最小生成树,有prime算法和kruskal算法:有向图的最短路径算法有dijkstra算法和floyd算法. 生成树的概念:联通图G的一个子图如果是一棵包 ...

  3. 最小生成树(prime算法、kruskal算法) 和 最短路径算法(floyd、dijkstra)

    带权图分为有向和无向,无向图的最短路径又叫做最小生成树,有prime算法和kruskal算法:有向图的最短路径算法有dijkstra算法和floyd算法. 生成树的概念:联通图G的一个子图如果是一棵包 ...

  4. 最小生成树Prime算法

    洛谷p1546链接 Prime算法的核心也是贪心,但是不同的就是,它是一直维护一颗树, 直到变成一颗最小生成树, #include<bits/stdc++.h> using namespa ...

  5. 最小生成树的Prime算法的思想

    Prime算法的核心步骤是:在带权连通图中V是包含所有顶点的集合, U已经在最小生成树中的节点,从图中任意某一顶点v开始,此时集合U={v},重复执行下述操作:在所有u∈U,w∈V-U的边(u,w)∈ ...

  6. 算法学习之路|最小生成树——prime算法

    摘要: 算法概述:对于一个带权的连通图,其顶点的集合 为V,边的集合为E.定义一个新的集合Vnew={空},第一步在图中任选一个顶点v加入Vnew,第二步寻找最短的边(u,v),其中u∈Vnew,v∈ ...

  7. prime算法详解【最小生成树】

    无以言表我对着代码懵了两个小时终于看懂了的鸡冻,手写程序大法好哇,[或者只是我太久没敲代码了..]个人感觉这个算法还是有点粗鲁,大量的遍历,比较中意最小生成树的另一个算法,一会搞懂它的代码再说. 最小 ...

  8. 数据结构——最短路径之Dijkstra算法(与最小生成树的prime算法很像,建议一起看)

    最短路径之Dijkstra算法 (一)Dijkstra算法 单源最短路径:就是从某一个顶点出发,到图中任意顶点之间的最短路径: [算法概述]:Dijkstra算法适用于解决单源最短路径的问题.即:从源 ...

  9. POJ 2395 Out of Hay 最小生成树(prime算法)

    题目: 有N(2-2000)个农场,M(1-10000)条通路连通各个农场,长度不超109,要求遍历全部的农场,且每走1单位长度就要消耗一单位水,每到一个农场可以把自己的水充满,求最小的水箱容量. 样 ...

  10. Prime算法生成迷宫

    prime迷宫生成 结果展示 算法解析 实现代码 结果展示 算法解析 参考链接 Prime迷宫生成算法的原理: (1)初始地图所有位置均设为墙 (2)任意插入一个墙体进墙队列 (3)判断此时墙体是否可 ...

最新文章

  1. 基于3D深度视觉的人体姿态估计算法
  2. 如何在存储过程中得到被调用存储过程的结果集
  3. python中一共有多少个关键字-python – 搜索多个关键字的字符串列表
  4. fotify php审计,代码安全审计(二)Fortify介绍及使用教程
  5. Android之玩转选项卡(TabHost、TabWidget、FrameLayout)
  6. RESTEasy教程第3部分:异常处理
  7. WCF技术实现基于角色的访问控制
  8. 如何在Ubuntu上安装MySQL
  9. 在vue项目中导入element-ui
  10. pycharm 调试教程
  11. EmbossMaskFilter BlurMaskFilter 学习
  12. sql常用优化小知识
  13. 国外的号码如何批量加入通讯录,Excel表格如何批量导入安卓苹果手机通讯录,如何快速的添加whatsApp,下面介绍具体的方法和软件
  14. 诚之和:字节再迎裁员潮温州百人“大撤退”、ohayoo应届生“团灭”
  15. 猿创征文|聊一聊我在字节跳动做项目质量改进的经验
  16. USB-C版3.7V锂电池充电与升压输出电路(5V/1A输出)-充电电源板(附电路图和PCB 抄板直接可用)
  17. 2021年终总结,我躺平了
  18. BZOJ 4407于神之怒加强版
  19. 老程序员的10条中肯建议
  20. struts2+spring3+hibernate4

热门文章

  1. 简单理解javascript中的原型对象,实现对之间共享属性和行为
  2. 亚马逊股价继续大涨 首度突破每股800美元
  3. sharepoint 2007 无法自动跳转到default.aspx
  4. Redis系列(二)-Hredis客户端设计及开源
  5. SharePoint 2007中的搜索服务
  6. 死锁的产生原因和解决办法
  7. Android ProGuard 代码压缩混淆与打包优化
  8. 第26条:优先考虑泛型
  9. tomcat 7配置ssl教程
  10. Effective C# 原则3:选择is或者as操作符而不是做强制类型转换(翻译)