prim:

  1. int cost[MAX_V][MAX_V]; //cost[u][v]表示边e=(u,v)的权值(不存在的情况下设为INF)
  2. int mincost[MAX_V]; //从集合X出发的每个变得最小权值
  3. bool used[MAX_V]; //顶点i是包含在集合X中
  4. int V; //顶点数
  5. int prim()
  6. {
  7. int res = ;
  8. for(int i=;i < V;i++)
  9. {
  10. mincost[i] = INF;
  11. used[i] = false;
  12. }
  13. mincost[] = ;
  14. while()
  15. {
  16. int v = -;
  17. for(int u=;u < V;u++) //从点集外找权值最小的路径
  18. {
  19. if(!used[u]&&(v == - || mincost[u] < mincost[v])) //因为c++从左到右所以这样写不会越界
  20. v = u;
  21. }
  22. if(v == -) break;
  23. used[v] = true;
  24. res += mincost[v]; //把每次的权值加上去
  25. for(int u=;u < V;u++) //因为新把 v 加入点集,因此Mincost[]需要重新计算
  26. {
  27. mincost[u] = min(mincost[u],cost[v][u]);
  28. }
  29. }
  30. return res;
  31. }

kruskal + 并查集:

  1. const int MAX_V = ;
  2.  
  3. struct edge
  4. {
  5. int u;
  6. int v;
  7. int cost;
  8. };
  9.  
  10. bool comp(const edge &e1,const edge &e2)
  11. {
  12. return e1.cost < e2.cost;
  13. }
  14.  
  15. edge es[MAX_V];
  16. int V,E; //顶点数和边数
  17.  
  18. int kruskal()
  19. {
  20. sort(es,es+E,comp); //将边按照cost的大小顺序排序
  21. init_union_find(V); //并查集初始化
  22. int res = ;
  23. for(int i=;i < E;i++)
  24. {
  25. edge e = es[i];
  26. if(!same(e.u,e.v)) //如果一条边的两个端点不在同一个集合之内则合并两个点集
  27. {
  28. unite(e.u,e.v);
  29. res += e.cost;
  30. }
  31.  
  32. }
  33. return res;
  34. }

——

最小生成树prim和kruskal模板的更多相关文章

  1. poj1861 最小生成树 prim &amp; kruskal

    // poj1861 最小生成树 prim & kruskal // // 一个水题,为的仅仅是回味一下模板.日后好有个照顾不是 #include <cstdio> #includ ...

  2. 图的最小生成树(Prim、Kruskal)

    理论: Prim: 基本思想:假设G=(V,E)是连通的,TE是G上最小生成树中边的集合.算法从U={u0}(u0∈V).TE={}开始.重复执行下列操作: 在所有u∈U,v∈V-U的边(u,v)∈E ...

  3. hdu1162(最小生成树 prim or kruscal模板)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1162 意义:给出一些点,用线问使所有点直接或间接连通,需要多长: 思路:裸最小生成树: 法1: pri ...

  4. 最小生成树 Prim算法 Kruskal算法实现

    最小生成树定义 最小生成树是一副连通加权无向图中一棵权值最小的生成树. 在一给定的无向图 G = (V, E) 中,(u, v) 代表连接顶点 u 与顶点 v 的边(即,而 w(u, v) 代表此边的 ...

  5. 最小生成树Prim算法 Kruskal算法

    Prim算法(贪心策略)N^2 选定图中任意定点v0,从v0开始生成最小生成树 树中节点Va,树外节点Vb 最开始选一个点为Va,其余Vb, 之后不断加Vb到Va最短距离的点 1.初始化d[v0]=0 ...

  6. 最小生成树--Prim及Kruskal

    //prim算法#include<cstdio> #include<cmath> #include<cstring> #include<iostream> ...

  7. 最小生成树--prim+优先队列优化模板

    prim+优先队列模板: #include<stdio.h> //大概要这些头文件 #include<string.h> #include<queue> #incl ...

  8. 最小生成树Prim算法Kruskal算法

    Prim算法采用与Dijkstra.Bellamn-Ford算法一样的“蓝白点”思想:白点代表已经进入最小生成树的点,蓝点代表未进入最小生成树的点. 算法分析 & 思想讲解: Prim算法每次 ...

  9. 最小生成树 Prim和Kruskal

    感觉挺简单的,Prim和Dijkstra差不多,Kruskal搞个并查集就行了,直接上代码吧,核心思路都是找最小的边. Prim int n,m; int g[N][N]; int u,v; int ...

随机推荐

  1. HDU_3183_A Magic Lamp

    A Magic Lamp Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Tota ...

  2. php安装xmlwriter遇到报错及解决方法

    Q1:make的时候报' error: 'zend_class_entry' has no member named 'default_properties''错误, A:把 错误行C文件中defau ...

  3. Python爬虫基础(二)urllib2库的get与post方法

    urllib2默认只支持HTTP/HTTPS的GET和POST方法 一.Get方式 GET请求一般用于我们向服务器获取数据,比如说,我们用百度搜索,在百度搜索框中搜索“秦时明月”,拿到地址栏里有效ur ...

  4. django的cache

    使用文件缓存 #settings.py   CACHES = {   'default': {   'BACKEND': 'django.core.cache.backends.filebased.F ...

  5. SQL Server 复制(Replication) ——事务复制搭建

    本文演示如何搭建最基本的事务复制. 环境准备: 虚拟机2台: 服务器名分别为RepA和RepB,RepA为发布服务器,RepB为订阅服务器.均安装WindowsServer 2008R2英文版(在外企 ...

  6. spring-data-jpa 介绍 复杂查询,包括多表关联,分页,排序等

    本篇进行Spring-data-jpa的介绍,几乎涵盖该框架的所有方面,在日常的开发当中,基本上能满足所有需求.这里不讲解JPA和Spring-data-jpa单独使用,所有的内容都是在和Spring ...

  7. 13信号signal

    信号 传送给进程的事件通知,完成异步通信 信号的产生 1.程序错误:硬件异常,除数为0,等 2.外部事件:定时器事件,按键中断(ctrl+c)等 3.显示请求:调用 kill,  raise 等信号发 ...

  8. tslib移植中环境变量编辑

    (1)将/usr/local/tslib下的所有文件复制到移植系统文件中/usr/local(2)编辑移植系统中/etc/profile添加触摸屏支持内容:在/etc/profile文件中设置tsli ...

  9. Centos7.5 升级python3.6

    Centos7.5自带为/usr/bin/python2.7,需升级到python3.6,安装非常简单,直接通过yum. #centos7 pythonyum install epel-release ...

  10. Python3:sqlalchemy对sybase数据库操作,非sql语句

    Python3:sqlalchemy对sybase数据库操作,非sql语句 # python3 # author lizm # datetime 2018-02-01 10:00:00 # -*- c ...