最小生成树的prim算法:

1,在顶点中任取一点,加入集合U中;

2,在集合外的点中找到离集合中的点中最近的点并构成路径,找到的点加入集合中;

3,重复2过程到树构建完毕;

举个栗子:

从1开始,1加入集合U中,2,3,4,在集合外;

选择离集合中点最近的点4,4加入集合中,2,3在集合外;

选择离集合中点最近的点2,2加入集合中,3在集合外;

选择离集合中点最近的点3,3加入集合中,完毕;

测试:

代码:

#include<iostream>
#include<cstring>
#include<climits>
using namespace std;
const int M=500;
int cost[M][M];
int Creat(){int n,m;cin>>n>>m;for(int q=1;q<=n;q++){for(int w=1;w<=n;w++)cost[q][w]=INT_MAX;}int a,b,c;for(int q=1;q<=m;q++){cin>>a>>b>>c;cost[a][b]=c;cost[b][a]=c;}return n;
}
void prim(int n){int close[M],lowcost[M];for(int q=1;q<=n;q++){close[q]=1;lowcost[q]=cost[1][q];}close[1]=-1;for(int q=1;q<n;q++){int Min=INT_MAX,u=q;for(int w=1;w<=n;w++)if(close[w]!=-1 && lowcost[w]<Min){Min=lowcost[w];u=w;}cout<<"("<<close[u]<<","<<u<<")"<<" "<<lowcost[u]<<endl;for(int w=1;w<=n;w++)if(close[w]!=-1 && lowcost[w]>cost[u][w]){lowcost[w]=cost[u][w];close[w]=u;}}return;
}
int main() {int t;cin>>t;while(t--){int n=Creat();prim(n);}return 0;
}

转载于:https://www.cnblogs.com/zhizhaozhuo/p/9594238.html

prim 算法加模板相关推荐

  1. 最小生成树(Prim算法,Kruskal算法)

    最小生成树 假设要在n个城市之间建立通信联络网,则连通n个城市只需要n-1条线路.这时,自然各 考虑这样一个问题,如何在最节省经费的前提下建立这个通信网. 在每两个城市之间都可设置一条线路,相应地都要 ...

  2. kuangbin 最小生成树专题 - ZOJ - 1586 QS Network (朴素 Prim算法 模板题)

    kuangbin 最小生成树专题 - ZOJ - 1586 QS Network (朴素 Prim算法 模板题) 总题单 week 3 [kuangbin带你飞] 题单 最小生成树 + 线段树 Cli ...

  3. POJ 1287 Prim算法模板

    原题链接:POJ1287 解析:这题我用来练习Prim算法的,算是当作一个模板来看.以下代码有几点要说明的: 我使用了优先队列,并没有使用dist[u]数组来保存当前子树到 u 的最短距离,这样省去了 ...

  4. 【模板】ACwing算法基础课模板小全

    一.基础算法 快速排序算法模板 void quick_sort(int q[], int l, int r) {//递归的终止情况if (l >= r) return;//选取分界线.这里选数组 ...

  5. Kruskal算法和Prim算法

    Kruskal算法和Prim算法 在无向图中,连通且不含圈的图称为树.给定一个无向图G=(V,E),连通G中所有点,且边集使E的子集的树称为G的生成树,其中权值最小的生成树称为最小生成树(MST).构 ...

  6. 最小生成树(Kruskal和Prim算法基础讲述)

    如果有啊哈算法这本书的话建议去看那本书上的第八章第一节和第二小节,讲的都特别的详细,而且也是使用了大量的图画来帮助理解,我也是今天中午刚有读过那上面的内容,根据模板每种算法做了一道题(也算是体会到算法 ...

  7. 数据结构与算法(7-3)最小生成树(普里姆(Prim)算法和克鲁斯卡尔(Kruskal)算法)

    目录 一.最小生成树简介 二.普里姆算法(Prim) 1.原理 2.存储 2-1.图顶点和权: 2-3. 最小生成树: 3.Prim()函数 3-1.新顶点入树 3-2.保留最小权 3-3. 找到最小 ...

  8. 最小生成树(Kruskal和Prim算法)

    一.先再次明确关于图的几个概念定义: 连通图:在无向图中,若任意两个顶点vivi与vjvj都有路径相通,则称该无向图为连通图. 强连通图:在有向图中,若任意两个顶点vivi与vjvj都有路径相通,则称 ...

  9. 【算法】prim算法(最小生成树)(与Dijkstra算法的比较)

    最小生成树: 生成树的定义:给定一个无向图,如果它的某个子图中任意两个顶点都互相连通并且是一棵树,那么这棵树就叫做生成树.(Spanning Tree) 最小生成树的定义:在生成树的基础上,如果边上有 ...

最新文章

  1. 前端那些事之Bootstrap篇
  2. sci face 补全
  3. 你和学霸的差距,不只是成绩
  4. win10系统预览体验计划错误代码0x800bfa19怎么办
  5. 在Windows中为文件添加“可执行”权限(chmod +x 文件名 不起作用)
  6. java基础篇--------------配置jdk的环境变量
  7. 【修真院WEB小课堂】定时器有哪些用法?
  8. SQL查询效率-100w数据查询只要1秒
  9. 华为内部经典项目管理体系
  10. java opts配置_JAVA_OPTS设置参数
  11. html访问域名跳转,根据访问的域名跳转到指定目录的代码
  12. 定义一个形状类(Shape)方法:计算周长,计算面积。子类: 矩形类、圆形类、三角形类...
  13. node插件rimraf
  14. 蓝鲸CMP:跳出云管看云管
  15. 【五】 C语言基础知识学习回顾 | 一篇搞定C语言基础 | 内附详细代码以及注释
  16. ubuntu18.04 安装flash。
  17. Heavy Transportation(Dijkstra算法)
  18. 计算机屏幕怎么拆,aoc显示器怎么拆解?拿掉器的拆解方法!
  19. 大型网站技术架构(一)--大型网站架构演化
  20. 深入应用C++11:代码优化与工程级应用

热门文章

  1. Linux 查找指定文件并删除
  2. 【OpenCV归纳】4 关于HighGUI
  3. The Code Commandments: Best Practices for OCCoding
  4. 安卓应用自动化测试工具汇总
  5. windows XP下DCOM的权限配置
  6. SSL 的 java 实现
  7. linux 8051 编译,[编译] 3、在Linux下搭建51单片机的开发烧写环境(makefile版)
  8. java如何解决高并发问题_java怎么处理高并发?
  9. RabbitMQ绑定(bindings)
  10. #{}和${}的区别是什么?