#include<bits/stdc++.h>
using namespace std;
#define INF 0x3f3f3f3f
const int maxn = 117;
int m[maxn][maxn];
int vis[maxn], low[maxn];
/*
对于这道题目来将,m就是临接矩阵,vis是访问标记数组,low是最短距离数组
*/
int n;
int prim()
{
vis[1] = 1;
int sum = 0;
int pos, minn;
pos = 1;
for(int i = 1; i <= n; i++)
{
low[i] = m[pos][i];
}
/*
先把第一个点放到树里,然后找到剩下的点到这个点的距离
*/
for(int i = 1; i < n; i++)//循环遍历 n-1 次数,把点全部加入!
{
minn = INF;
for(int j = 1; j <= n; j++)
{
if(!vis[j] && minn > low[j]) //没有进树的节点,并且这个节点到树里面 点距离最近,拉进来
{
minn = low[j];
pos = j;
}
}
sum += minn;
vis[pos] = 1;
for(int j = 1; j <= n; j++)
{
if(!vis[j] && low[j] > m[pos][j])//用新加入的点,更新low值
{
low[j] = m[pos][j];
}
}
}
return sum;
}
void init()
{
memset(vis,0,sizeof(vis));
memset(low,0,sizeof(low));
for(int i = 1; i <= n ;i++ )
for(int j = 1; j <= n; j++)
m[i][j] = INF;
}
void in_map()
{
printf("输入邻接矩阵阶:\n");
scanf("%d",&n);
printf("输入邻接矩阵,无穷用 -1代表!\n");
int t;
for(int i=1;i<=n;i++)
for(int j=1;j<=n;j++)
{
scanf("%d",&t);
m[i][j] = (t==-1?INF:t);
}
}
int main()
{
init();
in_map();
printf("%d",prim());
}
本文转载自:https://www.cnblogs.com/zpf1/p/9070776.html
举报
打赏
0 赞
0 收藏
分享
加载中

其他人还在看
2020年是极不平凡的一年,尽管外部环境不断变化,但越来越多的企业将开源技术作为构建信息系统的重要选择。其中也不乏一些以技术立业的创业企业,而像华为、阿里巴巴、腾讯、百度为代表的知名科技企业,早已拥抱开...
负载均衡和缓存功能是 Nginx 最常用的两个功能,这两个功能都属于高性能的调优手段,也和后端人员的关系比较密切,只有了解并会使用它们才能更好地调试和运行自己的项目。针对Nginx 负载均衡模式先前有整理过:N...
本文原题“程序员应如何理解高并发中的协程”,转载请联系作者。 1、系列文章引言 1.1 文章目的 作为即时通讯技术的开发者来说,高性能、高并发相关的技术概念早就了然与胸,什么线程池、零拷贝、多路复用、事件驱...
鸿蒙内核源码注释中文版 < Gitee仓 | CSDN仓 | Github仓 | Coding仓 >精读内核源码,中文注解分析,深挖地基工程,构建底层网图,四大码仓每日同步更新 鸿蒙源码分析系列篇 < CSDN | OSCHINA | WeHarmony | 公众号 >问...
还在单体应用的时候就是分层架构一说,我们用得最多的就是三层架构。而现在已经是微服务时代,在微服务架构模型比较常用的有几个,例如:整洁架构,CQRS(命令查询分离)以及六边形架构。每种架构模型都有自己的应...
作用域是JS中一个很基础但是很重要的概念,面试中也经常出现,本文会详细深入的讲解这个概念及其他相关的概念,包括声明提升,块级作用域,作用域链及作用域链延长等问题。 什么是作用域 第一个问题就是我们要弄清...
在过去的一年多,由于工作的原因我接触 Kafka 比较多,在工作的过程中,总结了很多关于 Kafka 的知识并将它们沉淀为一篇篇文章,包括 Kafka 核心知识点的讲解,工作中遇到的问题排查分析与性能调优相关,仔细看了...
前言 TKEx-CSIG 是基于腾讯公有云 TKE 和 EKS 容器服务开发的内部上云容器服务平台,为解决公司内部容器上云提供云原生平台,以兼容云原生、适配自研业务、开源协同为最大特点。 业务容器上云过程中,会遇到一些问...
一个量化策略在用于实际交易时,处理实时数据的程序通常为事件驱动。而研发量化策略时,需要使用历史数据进行回测,这时的程序通常不是事件驱动。因此同一个策略需要编写两套代码,不仅耗时而且容易出错。在 Dolp...
前言 什么叫做主成分分析法,我们先看一张图椭圆的图,如果让你找一条线,使得椭圆上所有点在该线上映射的点最分散,保留下来的信息最多,你会怎么选择这条线?若是下图,会选择水平线,这是用一维的方式去尽可能...
选择专区和圈子:{{title}}
{{o.name}}
{{m.name}}