洛谷p1546链接
Prime算法的核心也是贪心,但是不同的就是,它是一直维护一颗树,
直到变成一颗最小生成树,

#include<bits/stdc++.h>
using namespace std;
const int maxn = 110;
const int inf = 0x3f3f3f3f;
int maze[maxn][maxn], dis[maxn], n;//maze数组存的是i ,j两条边的权重。
bool visit[maxn];//判断是否走过这个点//走过就标记为true,没走就是false
void Prime() {int ans = 0;//设置初始没有边为0,visit[1] = true;设置第一个点为走过,for(int i = 2; i <= n; i++)dis[i] = maze[1][i];//初始dis数组为后面n-1个点到1的最小值,for(int i = 1; i < n; i++) {int minn = inf ,u = 1;//设置当前最优值,for(int j = 1; j <= n; j++)//在mei'youif(!visit[j] && dis[j] < minn) {minn = dis[j];u = j;}ans += minn;//找到一条最优边,加上他的权重,visit[u] = true;for(int j = 1; j <= n; j++)//更新当前可以查询的最优边。if(!visit[j])dis[j] = min(dis[j],maze[u][j]);//比对这条边跟之前已经选过的点是否更好,更好就加入,不是就不加入,}cout << ans <<endl;
}
int main() {cin >> n;memset(visit,false,sizeof(visit));//初始化为false,都没有走过,for(int i = 1; i <= n; i++)for(int j = 1; j <= n; j++)cin >> maze[i][j];//输入每条边的权重,Prime();return 0;
}

最小生成树Prime算法相关推荐

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

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

  2. 小白都能看懂最小生成树prime算法

    定义不多说,说说代码的实现. 用落谷上的题目来说明代码的正确性 落谷上的题目 邻接矩阵的实现 定义一个生成树点的集合A,和图中其他点 的集合B 先任意选择一个点a加入到A中,即visit[a]=tru ...

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

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

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

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

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

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

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

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

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

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

  8. 数据结构与算法A实验六图论---7-4 公路村村通(最小生成树Prime和Kruskal算法)

    现有村落间道路的统计数据表中,列出了有可能建设成标准公路的若干条道路的成本,求使每个村落都有公路连通所需要的最低成本. 输入格式: 输入数据包括城镇数目正整数N(≤1000)和候选道路数目M(≤3N) ...

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

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

最新文章

  1. 易遭黑客利用,慎用免费的网站SSL证书!!!
  2. python将文件夹打包
  3. 设计模式——责任链模式
  4. 如何在 C# 中用 SharpZipLib 进行 ZIP 压缩与解压(转)
  5. 接口数组 java_java 数组和集合
  6. git 裁切_GitHub - taiyang0725/PicCrop: 图片裁剪的工具类,基于uCrop封装,使用十分便捷...
  7. JDBC 与ODBC的区别
  8. Java类加载原理解析(转)
  9. Dropbox推荐使用
  10. ubuntu 18.04 使用 nvm 安装 nodejs
  11. matlab 求一元二次方程的根,如何用Matlab求一元二次方程式解的个数以及解
  12. matlab的解线性方程组
  13. 视觉检测系统设计过程中遇到的问题
  14. 【数据结构与算法】之深入解析“滑动谜题”的求解思路与算法示例
  15. 【金猿产品展】智能媒体审校系统:内容安全生产的守护者
  16. PTA 7-2 评委打分
  17. linux systemctl命令详解
  18. ZUCC_计算机网络实验_实验03 交换机基本配置
  19. R统计绘图-factoextra包绘制PCA图
  20. 也谈B2B网站的发展方向和趋势

热门文章

  1. 太努力工作的年轻人,都有病吧!?
  2. 2000多一件的大牌T恤,真实成本有多少?
  3. 2021,如何找到适合自己的圈子?
  4. Kaggle 发布首份数据科学从业报告 | 不及美国同行1/3,中国数据科学家平均年薪约3万美元
  5. 使用aconda3-5.1.0(Python3.6.4) 搭建pyspark远程部署
  6. 学生渐进片add如何给_渐进镜片的说明与镜架选择
  7. 抓取手机https_python爬虫入门02:教你通过 Fiddler 进行手机抓包
  8. 电影特效用到什么计算机知识,后期影视特效处理知识普及
  9. python 局部变量 占内存吗_Python中全局变量和局部变量的理解与区别
  10. 计算数字的出现次数 java_关于Java:如何计算数字在.txt文件中出现的次数