prim:

int cost[MAX_V][MAX_V]; //cost[u][v]表示边e=(u,v)的权值(不存在的情况下设为INF)
int mincost[MAX_V]; //从集合X出发的每个变得最小权值
bool used[MAX_V]; //顶点i是包含在集合X中
int V; //顶点数
int prim()
{
int res = ;
for(int i=;i < V;i++)
{
mincost[i] = INF;
used[i] = false;
}
mincost[] = ;
while()
{
int v = -;
for(int u=;u < V;u++) //从点集外找权值最小的路径
{
if(!used[u]&&(v == - || mincost[u] < mincost[v])) //因为c++从左到右所以这样写不会越界
v = u;
}
if(v == -) break;
used[v] = true;
res += mincost[v]; //把每次的权值加上去
for(int u=;u < V;u++) //因为新把 v 加入点集,因此Mincost[]需要重新计算
{
mincost[u] = min(mincost[u],cost[v][u]);
}
}
return res;
}

kruskal + 并查集:

const int MAX_V = ;

struct edge
{
int u;
int v;
int cost;
}; bool comp(const edge &e1,const edge &e2)
{
return e1.cost < e2.cost;
} edge es[MAX_V];
int V,E; //顶点数和边数 int kruskal()
{
sort(es,es+E,comp); //将边按照cost的大小顺序排序
init_union_find(V); //并查集初始化
int res = ;
for(int i=;i < E;i++)
{
edge e = es[i];
if(!same(e.u,e.v)) //如果一条边的两个端点不在同一个集合之内则合并两个点集
{
unite(e.u,e.v);
res += e.cost;
} }
return res;
}

——

最小生成树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. drop user 报错ora-00604

    问题描述: SQL> show user USER is "SYS" SQL> drop user efmis_zhongyang cascade; drop user ...

  2. wireshark udp 序列号 User Datagram Protocol UDP

    序列号等差2^8固定首部20字节首部20+4字节数据部分1378字节片偏移0位Quick UDP Internet

  3. as modern frameworks have warmed people to the idea of using builder-type patterns and anonymous inner classes for such things

    mybatis – MyBatis 3 | SQL语句构建器 http://www.mybatis.org/mybatis-3/zh/statement-builders.html SqlBuilde ...

  4. Python开发【杂货铺】:写code经常记不住的事儿

    1.添加系统环境变量: 每次写程序,把程序路径添加到环境变量中时,总是磕磕绊绊忘一些,搞得总是从之前的程序里直接copy # 程序目录添加到系统环境变量 import os import sys im ...

  5. L​i​n​u​x​下​的​D​a​e​m​o​n​简​介(转)

    add by zhj: 接触这个概念也有段时间了,但一直没搞明白,今天总算明白了. 原文:http://wenku.baidu.com/link?url=FEJeQ0J45YaFXansxT2GVVB ...

  6. 寻找最小(最大)的k个数

    题目描述:输入n个整数,输出其中最小的k个元素. 例如:输入1,2,3,4,5,6,7,8这8个数字,则最小的4个数字为1,2,3,4. 思路1:最容易想到的方法:先对这个序列从小到大排序,然后输出前 ...

  7. ansible(3)

    一.setup模块 ansible的setup模块主要用来收集信息,查看参数: [root@localhost ~]# ansible-doc -s setup # 查看参数,部分参数如下: filt ...

  8. Keras-图片预处理

    图片预处理 图片生成器ImageDataGenerator keras.preprocessing.image.ImageDataGenerator(featurewise_center=False, ...

  9. JAVA问题定位跟踪技术

    常用的JAVA调试技巧: 线程堆栈解读 性能瓶颈分析 远程调试 内存泄露检测 常用工具集: proc工具集 系统跟踪命令truss/strace Core文件管理coreadm 进程状态监控prsta ...

  10. mysql慢日志

    mysql慢日志是用来记录执行时间比较长的sql工具(超过long_query_time的sql),这样对于跟踪有问题的sql很有帮助. 查看是否启用慢日志和相关信息 上面截图其中: log_slow ...