最小生成树之Prim算法+堆优化

简介: 笔记
#include<bits/stdc++.h>
#define INF 0x3f3f3f3f3f3f3f3f
#define mod 1000000007
#define IOS ios::sync_with_stdio(false)
#define endl '\n'
using namespace std;
typedef long long ll;
const int maxn = 1e5 + 10;
typedef pair<int, int> p;
vector<p>vec[maxn];
int vis[maxn];
int main() {
  int n, m;
  int u, v, val;
  int ans = 0;
  scanf("%d%d", &n, &m);
  memset(vis, 0, sizeof(vis));
  for (int i = 1;i <= m;++i) {
    scanf("%d%d%d", &u, &v, &val);//读入边
    vec[u].push_back(p(val, v));//顶点u到v距离为val
    vec[v].push_back(p(val, u));//顶点v到u距离为val
  }
  priority_queue<p, vector<p>, greater<p> >pq;//优先队列
  vis[1] = 1;
  for (int i = 0;i < vec[1].size();++i) {
    pq.push(vec[1][i]);//将与1相连的顶点入队
  }
  while (!pq.empty()) {
    p now = pq.top();
    pq.pop();
    if (!vis[now.second]) {//当前顶点没有被访问过
      vis[now.second] = 1;//标记已经被访问过
      ans += now.first;
    }
    for (int i = 0;i < vec[now.second].size();++i) {//枚举与刚刚进树的这个顶点
      if (!vis[vec[now.second][i].second]) {//相邻的顶点
        pq.push(vec[now.second][i]);//将其进队列 优先队列会自动排序
      }
    }
  }
  printf("%d\n", ans);
  return 0;
}
目录
相关文章
|
5天前
|
机器学习/深度学习 自然语言处理 算法
深度解析深度学习中的优化算法:从梯度下降到自适应方法
【4月更文挑战第28天】 在深度学习模型训练的复杂数学迷宫中,优化算法是寻找最优权重配置的关键导航者。本文将深入探讨几种主流的优化策略,揭示它们如何引导模型收敛至损失函数的最小值。我们将比较经典的批量梯度下降(BGD)、随机梯度下降(SGD)以及动量概念的引入,进一步探索AdaGrad、RMSProp和Adam等自适应学习率方法的原理与实际应用。通过剖析这些算法的理论基础和性能表现,我们旨在为读者提供一个关于选择合适优化器的参考视角。
|
6天前
|
算法 索引
数据结构与算法-最小生成树入门
数据结构与算法-最小生成树入门
12 0
|
6天前
|
算法 索引
数据结构与算法-并查集多种实现以及优化步骤
数据结构与算法-并查集多种实现以及优化步骤
7 0
|
8天前
|
机器学习/深度学习 人工智能 算法
揭秘深度学习中的优化算法
【4月更文挑战第24天】 在深度学习的广阔天地中,优化算法扮演着至关重要的角色。本文将深入探讨几种主流的优化算法,包括梯度下降法、随机梯度下降法、Adam等,并分析它们的特点和适用场景。我们将通过理论分析和实例演示,揭示这些优化算法如何帮助模型更高效地学习参数,从而提高模型的性能。
|
8天前
|
人工智能 达摩院 算法
什么是优化技术?给算法小白同学的快速讲解和上手文
本文作者用一个曾经小白学习的视角,来讲解什么是优化问题,以及要如何用这个优化技术。
|
15天前
|
算法
PID算法原理分析及优化
这篇文章介绍了PID控制方法,这是一种广泛应用的控制算法,具有结构简单、鲁棒性强等特点。PID通过比例、积分和微分三个部分调整控制量,以减少系统输出与目标值的偏差。文章详细阐述了PID的基本原理,包括比例、积分和微分调节的作用,并提到积分饱和和微分项振荡的问题以及对应的优化策略,如积分分离、变速积分和微分先行等。此外,还提到了数字PID的实现形式,如位置式、增量式和步进式,以及串级PID在电机控制等领域的应用。
24 10
|
17天前
|
算法
R语言使用随机技术差分进化算法优化的Nelson-Siegel-Svensson模型
R语言使用随机技术差分进化算法优化的Nelson-Siegel-Svensson模型
23 0
|
17天前
|
存储 机器学习/深度学习 算法
上机实验三 图的最小生成树算法设计 西安石油大学数据结构
上机实验三 图的最小生成树算法设计 西安石油大学数据结构
19 1
|
24天前
|
算法 数据处理 C语言
【数据结构与算法】快速排序(详解:快排的Hoare原版,挖坑法和双指针法|避免快排最坏时间复杂度的两种解决方案|小区间优化|非递归的快排)
【数据结构与算法】快速排序(详解:快排的Hoare原版,挖坑法和双指针法|避免快排最坏时间复杂度的两种解决方案|小区间优化|非递归的快排)
|
25天前
|
搜索推荐 算法 索引
【排序算法】深入解析快速排序(霍尔法&&三指针法&&挖坑法&&优化随机选key&&中位数法&&小区间法&&非递归版本)
【排序算法】深入解析快速排序(霍尔法&&三指针法&&挖坑法&&优化随机选key&&中位数法&&小区间法&&非递归版本)