prim /kruskal 最小生成树
#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 最小生成树的更多相关文章
- 最小生成树(prim&kruskal)
最近都是图,为了防止几次记不住,先把自己理解的写下来,有问题继续改.先把算法过程记下来: prime算法: 原始的加权连通图——————D被选作起点,选与之相连的权值 ...
- 数据结构学习笔记05图(最小生成树 Prim Kruskal)
最小生成树Minimum Spanning Tree 一个有 n 个结点的连通图的生成树是原图的极小连通子图,且包含原图中的所有 n 个结点,并且有保持图连通的最少的边. 树: 无回路 |V|个顶 ...
- Prim和Kruskal最小生成树
标题: Prim和Kruskal最小生成树时 限: 2000 ms内存限制: 15000 K总时限: 3000 ms描述: 给出一个矩阵,要求以矩阵方式单步输出生成过程.要求先输出Prim生成过程,再 ...
- 最小生成树详解 prim+ kruskal代码模板
最小生成树概念: 一个有 n 个结点的连通图的生成树是原图的极小连通子图,且包含原图中的所有 n 个结点,并且有保持图连通的最少的边. 最小生成树可以用kruskal(克鲁斯卡尔)算法或prim(普里 ...
- 最小生成树 Prim Kruskal
layout: post title: 最小生成树 Prim Kruskal date: 2017-04-29 tag: 数据结构和算法 --- 目录 TOC {:toc} 最小生成树Minimum ...
- 最小生成树算法详解(prim+kruskal)
最小生成树概念: 一个有 n 个结点的连通图的生成树是原图的极小连通子图,且包含原图中的所有 n 个结点,并且有保持图连通的最少的边. 最小生成树可以用kruskal(克鲁斯卡尔)算法或prim(普里 ...
- Kruskal 最小生成树算法
对于一个给定的连通的无向图 G = (V, E),希望找到一个无回路的子集 T,T 是 E 的子集,它连接了所有的顶点,且其权值之和为最小. 因为 T 无回路且连接所有的顶点,所以它必然是一棵树,称为 ...
- 贪心算法(2)-Kruskal最小生成树
什么是最小生成树? 生成树是相对图来说的,一个图的生成树是一个树并把图的所有顶点连接在一起.一个图可以有许多不同的生成树.一个有 n 个结点的连通图的生成树是原图的极小连通子图,且包含原图中的所有 n ...
- [算法系列之二十七]Kruskal最小生成树算法
简单介绍 求最小生成树一共同拥有两种算法,一个是就是本文所说的Kruskal算法,还有一个就是Prime算法. 在具体解说Kruskal最小生成树算法之前,让我们先回想一下什么是最小生成树. 我们有一 ...
随机推荐
- 数据备份——PHP
在大多数情况下,开发实在win下进行,因此,然系统每天自动备份数据这也是有必要的饿. Windows平台数据备份 创建批处理文件 在批处理文件中填写如下代码: D:\wamp64\bin\php\ph ...
- XtrasReport 标签打印
var lblList = new List<product_LblPrt_tmp>(); using (JL_MFGEntities ctx = new JL_MFGEntities() ...
- .net二纬码标签打印
在企业开发中经常用到二纬码标签,本文详细介绍.net环境下整个二纬码解决方案. 开发环境 vs2008 DevExpress8.3 ThoughtWorks.QRCode (二纬码生成组件,高版 ...
- [转]如何创建一个自签名的SSL证书(X509)
原文出自:http://www.joyios.com/?p=47 引言 使用HTTP(超文本传输)协议访问互联网上的数据是没有经过加密的.也就是说,任何人都可以通过适当的工具拦截或者监听到在网络上传输 ...
- java复习小知识(基础不算,有反射,递归)
顺序选择循环,三种 1.至于循环和递归 循环效率更高,但是递归在处理文件递归的时候更为常见快捷 在java中实现传多参 2.public static void main(String[] args ...
- osx上使用'cd'命令跳转到别名(alias)目录
在mac上使用windows的共享目录时,在terminal中时法使用cd的,会提示"xxx 不是目录",经过一番的查找,发现了Mac Terminal 'cd' to folde ...
- mysqldump的简单使用
背景 需要搞mysql数据同步,从一台服务器把数据库同步到另外一台服务器上,如果折腾过的话,就知道有个这玩意--mysqldump,其实就是mysql自带的一个命令而已 操作步骤 1. 认识mysql ...
- 网站图标ICO
效果图: 代码: 1 2 3 4 5 6 <head> ... <link rel="shortcut icon" href="/favicon.i ...
- DataGridView添加一行数据、全选、取消全选、清空数据、删除选中行
.net 2005下的Windows Form Application,一个DataGridView控件和4个Button,界面设置如下: 代码如下,有注解,相信大家都看得明白: ...
- Android ScrollView 子控件不占满的问题
经常碰到很笨的 ScrollView的子控件无法占满 ScrollView 的空间的问题. 其实只需要加一行,android:fillViewport="true" 但不加上这行就 ...