#include<iostream>
#include<cstdio>
#include<cstring>
#include<cstdlib>
#include<cmath>
#include<algorithm>
#include<stack>
#include<queue>
#include<vector>
#include<time.h>
#define INF 0x3f3f3f
using namespace std;
int edge[][];
int lowcost[];
int index[];
int v,e,a,b,c;
void prim()
{
int minm,idx;
index[]=;
lowcost[]=;
for(int i=; i<v; i++)
{
lowcost[i]=edge[i][];
index[i]=;
}//初始化
for(int i=; i<v; i++)
{
// cout<<endl;
minm=INF;
for(int j=; j<v; j++)
{
// cout<<"=============="<<j<<" "<<lowcost[j]<<endl;
if(lowcost[j]!=&&lowcost[j]<minm)
{
minm=lowcost[j];
idx=j;
// cout<<idx<<endl;
} }
// cout<<index[idx]<<" , "<<idx<<" "<<lowcost[idx]<<endl;
lowcost[idx]=; for(int j=; j<v; j++)
{
if(lowcost[j]!=&&edge[j][idx]<lowcost[j])
{ lowcost[j]=edge[j][idx];
index[j]=idx;
//cout<<"j "<<j<<endl;
} }
}
for(int i=; i<v; i++)
{
cout<<i<<"----->"<<index[i]<<endl;
} } int main()
{ cin>>v>>e;
memset(edge,INF,sizeof(edge));
for(int i=; i<e; i++)
{
cin>>a>>b>>c;
edge[a][b]=edge[b][a]=c;
}
prim(); } /*

9 15
0 1 10
0 5 11
1 6 16
5 6 17
1 2 18
1 8 12
2 3 22
8 3 21
6 3 24
6 7 19
5 4 26
3 7 16
4 7 7
3 4 20
2 8 8

*/


kruskal

#include <stdio.h>
#include<iostream>
#include<algorithm>
using namespace std;
typedef struct ae
{
int f,t,w;
} eg;
eg edge[];
int parent[];
int m,n,a,b,c;//m个点,n条边
int cmp(eg a,eg b )
{
return a.w<b.w;
} int find(int f)
{
while(parent[f]>)
f=parent[f];
return f;
} void kruskal()
{
sort(edge,edge+n,cmp);
for(int i=; i<m; i++)
parent[i]=;
for(int i=; i<n; i++)
{
int bg=find(edge[i].f);
int ed=find(edge[i].t);
if(bg!=ed)
{
parent[bg]=ed;
printf("from: %d to: %d weight: %d\n",edge[i].f,edge[i].t,edge[i].w);
}
}
} int main()
{ cin>>m>>n;
for(int i=; i<n; i++)
{
scanf("%d%d%d",&a,&b,&c);
edge[i].f=a;edge[i].t=b;edge[i].w=c;
}
kruskal();
}

/*
有错
4 4
1 0 1
2 0 2
2 3 4
1 3 3
*/

 

prim /kruskal 最小生成树的更多相关文章

  1. 最小生成树(prim&kruskal)

    最近都是图,为了防止几次记不住,先把自己理解的写下来,有问题继续改.先把算法过程记下来: prime算法:                  原始的加权连通图——————D被选作起点,选与之相连的权值 ...

  2. 数据结构学习笔记05图(最小生成树 Prim Kruskal)

    最小生成树Minimum Spanning Tree 一个有 n 个结点的连通图的生成树是原图的极小连通子图,且包含原图中的所有 n 个结点,并且有保持图连通的最少的边. 树: 无回路   |V|个顶 ...

  3. Prim和Kruskal最小生成树

    标题: Prim和Kruskal最小生成树时 限: 2000 ms内存限制: 15000 K总时限: 3000 ms描述: 给出一个矩阵,要求以矩阵方式单步输出生成过程.要求先输出Prim生成过程,再 ...

  4. 最小生成树详解 prim+ kruskal代码模板

    最小生成树概念: 一个有 n 个结点的连通图的生成树是原图的极小连通子图,且包含原图中的所有 n 个结点,并且有保持图连通的最少的边. 最小生成树可以用kruskal(克鲁斯卡尔)算法或prim(普里 ...

  5. 最小生成树 Prim Kruskal

    layout: post title: 最小生成树 Prim Kruskal date: 2017-04-29 tag: 数据结构和算法 --- 目录 TOC {:toc} 最小生成树Minimum ...

  6. 最小生成树算法详解(prim+kruskal)

    最小生成树概念: 一个有 n 个结点的连通图的生成树是原图的极小连通子图,且包含原图中的所有 n 个结点,并且有保持图连通的最少的边. 最小生成树可以用kruskal(克鲁斯卡尔)算法或prim(普里 ...

  7. Kruskal 最小生成树算法

    对于一个给定的连通的无向图 G = (V, E),希望找到一个无回路的子集 T,T 是 E 的子集,它连接了所有的顶点,且其权值之和为最小. 因为 T 无回路且连接所有的顶点,所以它必然是一棵树,称为 ...

  8. 贪心算法(2)-Kruskal最小生成树

    什么是最小生成树? 生成树是相对图来说的,一个图的生成树是一个树并把图的所有顶点连接在一起.一个图可以有许多不同的生成树.一个有 n 个结点的连通图的生成树是原图的极小连通子图,且包含原图中的所有 n ...

  9. [算法系列之二十七]Kruskal最小生成树算法

    简单介绍 求最小生成树一共同拥有两种算法,一个是就是本文所说的Kruskal算法,还有一个就是Prime算法. 在具体解说Kruskal最小生成树算法之前,让我们先回想一下什么是最小生成树. 我们有一 ...

随机推荐

  1. Java 设计模式系列(五)原型模式

    Java 设计模式系列(五)原型模式 原型模式属于对象的创建模式.通过给出一个原型对象来指明所有创建的对象的类型,然后用复制这个原型对象的办法创建出更多同类型的对象.这就是选型模式的用意. 一.原型模 ...

  2. android屏幕页面实现滚动,页面跳转

    在 在LinearLayout外面包一层ScrollView即可,如下代码 Apidemo 中关于如何使用ScrollView说明,请参考:<ScrollView xmlns:android=& ...

  3. kaggle-泰坦尼克号Titanic-2

    下面我们再来看看各种舱级别情况下各性别的获救情况 fig = plt.figure() fig.set(alpha=0.5) plt.title(u"根据舱等级和性别的获救情况", ...

  4. C++友元函数、友元类

    1.什么是友元函数? 友元函数就是可以直接访问类的成员(包括私有数据)的非成员函数,也就是说他并不属于这个类,他是一种外部的函数. 一个外部函数只能通过类的授权成为这个类友元函数,这就涉及到一个关键字 ...

  5. swoole集群 nginx配置

    nginx配置文件: upstream cat { server 192.168.149.133:9502 weight=5; server 192.168.149.134:9502 weight=5 ...

  6. java经典开发模式

    Java Web开发方案有多种可供选择,这里列举一些经典的开发模式进行横向比较,为Java Web的开发模式选择提供参考.除此之外还有好多方案(如Tapestry和Wicket等等)并不了解,这里就不 ...

  7. ubuntu 安装 zend studio

    hi,everyone!2014 年到了,是20你死还是爱你一世,世人不得而知.夜观天象,道德依旧在沦丧,经济依然在滑坡.行了,就整这几句.最近在折腾linux,这篇文章,没有什么意义.只是找找写bl ...

  8. css+html+JQuery 万能弹出层,居中显示

    function ShowMsg(str) {//要提示的文字 $(".payment_time_mask").remove(); $("body").appe ...

  9. NETCore 同步AD域组织和用户

    BitAdminCore为没有自主开发框架的小团队,提供快速项目搭建及开发能力. 框架演示:http://bit.bitdao.cn 框架源码:https://github.com/chenyinxi ...

  10. js实现window.open不被拦截的解决方法汇总

    一.问题: 今天在处理页面ajax请求过程中,想实现请求后打开新页面,就想到通过 js window.open 来实现,但是最终都被浏览器拦截了. 二.分析: 在谷歌搜索有没有解决方法,有些说可以通过 ...