博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
最小生成树
阅读量:4309 次
发布时间:2019-06-06

本文共 1252 字,大约阅读时间需要 4 分钟。

prim算法:

#include
using namespace std;int data[100][100];int d[100];//存放当前的最小距离;int v[100];//标记是否用过;int sum;const int maxint=99999;void shuru(int n){ int a,b,c; for(int i=1;i<=100;i++)//初始化data[][]; for(int j=1;j<=100;j++) data[i][j]=maxint; for(int i=1;i<=n;i++)//初始化d[];使得其值为maxint; d[i]=maxint; while(cin>>a>>b>>c) { data[a][b]=c;//无相边; data[b][a]=c; }}void prim(int n){ d[1]=0;sum=0; memset(v,0,sizeof(v)); for(int i=1;i<=n;i++) { int min=maxint; int k=0; for(int j=1;j<=n;j++) { if(!v[j]&&d[j]<=min) { min=d[j]; k=j; } } sum=sum+min; v[k]=1;//标记已存的顶点标号; for(int g=1;g<=n;g++) //更新d[];由于s的集合多了一个k顶点,下一步比较未标记的顶点 到s的最小距离d【】时,只需要原来的d[j]和data[k][j]比较; if(!v[g]&&d[g]>data[k][g]) d[g]=data[k][g]; } cout<<"一共需要的最小权值为: "<
<
>n; shuru(n); for(int j=1;j<=n;j++) {
for(int i=1;i<=n;i++) cout<
<<" "; cout<

 

转载于:https://www.cnblogs.com/wuming127/archive/2012/08/21/2649849.html

你可能感兴趣的文章
从零开始的Docker ELK+Filebeat 6.4.0日志管理
查看>>
How it works(1) winston3源码阅读(A)
查看>>
How it works(2) autocannon源码阅读(A)
查看>>
How it works(3) Tilestrata源码阅读(A)
查看>>
How it works(12) Tileserver-GL源码阅读(A) 服务的初始化
查看>>
uni-app 全局变量的几种实现方式
查看>>
echarts 为例讲解 uni-app 如何引用 npm 第三方库
查看>>
uni-app跨页面、跨组件通讯
查看>>
springmvc-helloworld(idea)
查看>>
JDK下载(百度网盘)
查看>>
idea用得溜,代码才能码得快
查看>>
一篇掌握python魔法方法详解
查看>>
数据结构和算法5-非线性-树
查看>>
数据结构和算法6-非线性-图
查看>>
数据结构和算法7-搜索
查看>>
数据结构和算法8-排序
查看>>
windows缺少dll解决办法
查看>>
JPA多条件动态查询
查看>>
JPA自定义sql
查看>>
BigDecimal正确使用了吗?
查看>>