个人模板 prim 最小生成树

最小生成树之Prim算法的学习心得与个人总结 最小生成树之Prim算法的学习心得与个人总结 最小生成树:MST   从4.24到今天5.4(除去29,30,1三天假期),完成了hdu1162 , hdu1102 , hdu3371 , hdu1233 , hdu1879 , hdu1301 , hdu1864 。由于我的入手学习方法错了,导致花的时间比较长,效率低。错误方法是看完白书和黑书直接做模板题,导致了对算法细节的理解一塌糊涂。建 阅读详情
#include<bits/stdc++.h>

using namespace std;

const int Inf = 0x3f3f3f3f;
const int N = 1e4 + 10;
int n, m;
int a[N][N];

int prim(){
    int mst[N], low[N], ans = 0;
    mst[1] = 0;
    for(int i = 2; i <= n; i++){
        low[i] = a[1][i];
        mst[i] = 1;
    }
    for(int i = 2; i <= n; i++){
        int minx = Inf, minid;
        for(int j = 2; j <= n; j++){
            if(low[j] < minx && low[j]){
                minid = j;
                minx = low[j];
            }
        }
        ans += minx;
        low[minid] = 0;
        for(int j = 2; j <= n; j++){
            if(a[minid][j] < low[j]){
                low[j] = a[minid][j];
                mst[j] = minid;
            }
        }
    }
    return ans;
}

int main(){
    while(scanf("%d%d", &n, &m) == 2){
        for(int i = 1; i <= n; i++){
            for(int j = 1; j <= n; j++){
                a[i][j] = Inf;
            }
        }
        for(int i = 0; i < m; i++){
            int u, v, w;
            scanf("%d%d%d", &u, &v, &w);
            a[u][v] = a[v][u] = w;
        }
        printf("%d\n", prim());
    }
}
/*
6 10  
1 2 6  
1 3 1  
1 4 5  
2 3 5  
2 5 3  
3 4 5  
3 5 6  
3 6 4  
4 6 2  
5 6 6  
*/

最小生成树之prim算法 最小生成树的Prim算法也是贪心算法的一大经典应用。Prim算法的特点是时刻维护一棵树,算法不断加边,加的过程始终是一棵树。   Prim算法过程: 一条边一条边地加, 维护一棵树。 初始 E = {}空集合, V = {任意节点} 循环(n – 1)次,每次选择一条边(v1,v2), 满足:v1属于V , v2不属于V。且(v1,v2)权值最小。 E = E + (v1,v2) V = V... 阅读详情

相关推荐

最小生成树模板 洛谷 Prim算法和Kruskal算法

洛谷-最小生成树模板 题目描述 如题,给出一个无向图,求出最小生成树,如果该图不连通,则输出orz。 输入格式 第一行包含两个整数N,M,表示该图共有N个结点和M条无向边。 接下来MM行每行包含三个整数Xi,Yi,Zi ,表示有一条长度为Zi​的无向边连接结点 Xi​,Yi​。 输出格式 如果该图连通,则输出一个整数表示最小生成树的各边的长度之和。如果该图不连通...

JackGong1999的博客 2115

最小生成树——Prim算法(详细图解)

最小生成树的概念 在一给定的无向图G = (V, E) 中,(u, v) 代表连接顶点 u 与顶点 v 的边,而 w(u, v) 代表此的边权重,若存在 T 为 E 的子集(即)且为无循环图,使得的 w(T) 最小,则此 T 为 G 的最小生成树。最小生成树其实是最小权重生成树的简称。 ...

qq_62213124的博客 22万+

最小生成树-prim、kruskal算法

学习之前建议温习一下迪杰斯特拉算法和并查集~先简单认识下最小生成树:最小生成树是,即:以最小的成本(边的权值)将图中所有节点链接到一起。图中有n个节点,那么一定可以用n-1条边将所有节点连接到一起。那么就是最小生成树算法的任务所在。下面我们以一道模板题来讲解如何解决这个问题~~

qq_73704268的博客 1001

prim算法求最小生成树

最小生成树(Minimum Spanning Tree,简称MST)是图论中的一个概念。给定一个连通的无向图,最小生成树是指包含图中所有顶点的一棵树,且该树的所有边的权重之和最小。连通性:最小生成树必须包含图中的所有顶点,并且通过边将它们连接起来,确保整个图是连通的,即任意两个顶点之间都有路径。(一颗有 n 个顶点的生成树有且仅有 n−1 条边,如果生成树中再添加一条边,则必定成环。无环:最小生成树是一棵树,所以不能包含任何环(即回路)。最小权重:最小生成树的边权重之和应当尽可能地小。

sin1810335764的博客 4676

FPGA以太网开发实战:YT8511 PHY芯片MDIO接口配置全流程(附Verilog代码)

本文详细介绍了FPGA以太网开发中YT8511 PHY芯片MDIO接口的配置全流程,包括MDIO接口技术解析、Verilog状态机设计、核心代码实现细节及实战调试经验。通过提供经过验证的Verilog代码和优化策略,帮助开发者快速掌握以太网PHY芯片配置技术,提升通信系统性能。

weixin_29184371的博客 232

5G核心网NAS消息解析:从协议字段到实际抓包分析(附Wireshark示例)

本文深入解析5G核心网NAS消息的实战分析方法,从协议字段解读到实际Wireshark抓包诊断。通过详解扩展协议鉴别器、安全头类型、流程事务标识等核心字段,并结合注册流程故障排查实例,指导工程师快速定位NAS层问题,提升5G网络调试与协议分析效率。

grass的博客 532

图论 —— 最小生成树(朴素Prim原理及模板题)

最小生成树模板题以模板题为例子解释AC代码:(代码有详细的注释!) 模板题 给定一个n个点m条边的无向图,图中可能存在重边和自环,边权可能为负数。 求最小生成树的树边权重之和,如果最小生成树不存在则输出impossible。 给定一张边带权的无向图G=(V, E),其中V表示图中点的集合,E表示图中边的集合,n=|V|,m=|E|。 由V中的全部n个顶点和E中n-1条边构成的无向连通子图被称为G的一棵生成树,其中边的权值之和最小的生成树被称为无向图G的最小生成树。 输入格式 第一行包含两个整数n和m。 接下

ACM-ICPC 现役(铜牌) Codeforces Rating: 2172 2331

电容式麦克风:从原理到实际电路波形解析

本文深入解析电容式麦克风的工作原理,从核心的振膜与背板结构、电荷锁定机制到场效应管放大器的作用。通过实物拆解与等效电路分析,阐明声音振动如何转换为电压信号,并指导如何用示波器实测波形,直观展现声电转换过程,适合电子爱好者和音频技术学习者。

Black的专栏 1080

图论——最小生成树(Prim算法,Kruskal算法及常用模板)

最小生成树算法——Prim 算法(普⾥姆)Prim代码模板例题 POJ - 1258 Agri-NetAC代码最小生成树算法——Kruskal 算法(克鲁斯卡尔)Kruskal代码模板例题 POJ - 1287 NetworkingAC代码 最小生成树算法——Prim 算法(普⾥姆) 从某⼀个顶点开始构建⽣成树;每次将代价最⼩的新顶点纳⼊⽣成树,直到所有顶点都纳⼊为⽌。 算法描述: 在一个加权连通图中,顶点集合C,边集合为E 任意选出一个点作为初始顶点,标记为✔,计算所有与之相连接的点的距离,选择距离最.

沐雨风栉 1686

QT下利用FFTW实现功率谱密度分析(周期图法)

写在前面 出于项目需求,需要在QT的msvc 2015编译环境下实现功率谱密度估计。 所以这个需求很直接的关键词就是 1. C++ 2. QT 3. 傅里叶变换 4. 功率谱密度估计 但是在网上搜索了很久,没有一个非常直接的答案。所以我觉得很有必要写一篇文章来说明,在QT msvc2015 32bit环境下如何实现功率谱密度估计。 本文并没有经过严格编辑,但代码是已经可以跑通的,如...

李时珍食疗志的博客 5223

四轮两驱小车(四):STM32驱动5路灰度传感器PID循迹

之前买了一批5路灰度传感器,想用这传感器进行循迹,无奈网上和官方的资料提供的还是比较少,这里还是做一下当初的学习记录。

weixin_51651698的博客 6万+

最小生成树——prim算法

最小生成树是一棵树,因此它是不成环的。他是一个具有N个结点,N-1条边的无向图。(树是特殊的图)并且这个图任意一个结点之间都是直接或者间接相连的。这个图的边权和是最小的,顾名思义最小生成树。邻接表存图vis数组记录已访问结点优先级队列优化每次都从优先级队列里贪心的拿到最小权值所访问结点小于实际结点数,说明图不连通完。

HYY的博客 982

RK3568平台(USB篇)USB HUB集线器

hub,集线器,连接在host与device之间的一种用于usb接口扩展的usb设备。可以将一个usb上行接口扩展为多个下行接口,使得一个host可以同时与多个device连接。一般来说,一块hub桥接芯片可扩展4个usb接口,而市面上的一拖七hub,其实使用了两块hub桥接芯片,其中一块hub桥接芯片的上行端口连接到另一块hub桥接芯片的下行端口。hub的上行端口面向host,下行端口面向device。在下行端口上,hub提供了设备接入检测和设备移除检测的能力,并给下行端口供电。

weixin_49303682的博客 964

【最小生成树】一文学懂prim、kruskal算法

首先,我们要了解什么是最小生成树🌠树and图?其实树也是一种特殊的图;无向、无环、联通图,就是树。🌳最小生成树求最小生成树,简单来说,就是让组成图的顶点,根据现有的边的关系,从图转换成一个特殊的图——树,光转换成树还不行,还要时这个特殊的图的所有边的权重加起来最小!这就是所谓的求最小生成树。

Yaoyao2024的博客 1671

k8s配置habor作为镜像地址之后,如果harbor中没有镜像,如何设置自动从阿里云官方镜像仓库下载

通过 Harbor 的远端仓库可以集中管理。如果你在上游设置了 image prefix 为 library,那么对外访问 harbor.your-domain.com/library/nginx:latest 就会被 Harbor 去上游拉取 registry.cn-hangzhou.aliyuncs.com/library/nginx:latest 并缓存。- 将集群中的镜像地址改为 Harbor 的域名,比如 harbor.your-domain.com/library/nginx:latest。

极客栈 423

【ComfyUI】VideoRefusion 动态替换视频背景

本文介绍了一个基于ComfyUI的视频背景替换工作流,通过WanVAE和WanTextEncoder核心模型实现人物与背景的智能分离与替换。工作流包含9个关键流程阶段,涉及视频采样、图像增强等节点操作,可生成风格统一、动作自然的视频效果。该技术适用于虚拟人物创作、短视频特效、产品广告等场景,支持个性化定制开发。相关资源可参考文末提供的ComfyUI教程和AIGC工具平台开发指南。(149字)

Mr数据杨 2189

最小生成树之prim算法代码模板

import java.util.Arrays; import java.util.Scanner; public class Main { static int[][] map = new int[510][510]; static int[] dist = new int[510]; static boolean[] st = new boolean[510]; static int n, m; static int INF = Integer.MAX_VALUE / 100; pu.

一条咸鱼的博客 2539

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

c++题目_【模板】最小生成树Prim

(1≤n≤1e3,1≤m≤2e6)(1≤n≤1e3,1≤m≤2e6)我将起始节点的最小距离初始化为0,并通过循环找到每个节点到最小生成树的最小距离,并将最小距离加入最小生成树的权值中。这是一道最小生成树Prim的模板题,本题与【模板】最小生成树Kruskal,仅仅只有nn和mm的大小不同。后面输入m行,每行有33个正整数 x,y,zx,y,z,代表第i条边所连接的2个点和这条边的权值,选择<1,2,1><2,3,1>这两条边此时可以生成一个最小生成树,此时权值也就是1+1=2。表示最小生成树的权值,

曾梦想仗剑走天涯,梦想AK天下WA 622

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

ACM 最小生成树 Kruskal Prim 算法模板

定义: 求最小生成树,有两种算法。一种是 Prim算法 ,另一种是Kruskal算法。 你们可以先看下这个最小生成树(Kruskal(克鲁斯卡尔)和Prim(普里姆))算法动画演示 看了都说好 嘻嘻 先讲一种比较简单的————Kruskal算法 贪心+并查集 #include <iostream> #include <algorithm> using namesp...

qq_33866820的博客 486

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

最小生成树模板——Prim算法

Prim算法 1).输入:一个加权连通图,其中顶点集合为V,边集合为E; 2).初始化:Vnew= {x},其中x为集合V中的任一节点(起始点),Enew= {},为空; 3).重复下列操作,直到Vnew= V: 在集合E中选取权值最小的边<u, v>,其中u为集合Vnew中的元素,而v不在Vnew集合当中,并且v∈V(如果存在有多条满足前述条件即具有相同权值的边,则可任意选取其中之一); 将v加入集合Vnew中,将<u, v>边加入集合Enew中; 4).输出:使用集合Vnew

HangHug_L的博客 1016

图的最小生成树prim算法模板

用prim算法构建最小生成树适合顶点数据较少而边较多的图(稠密图) prim算法生成连通图的最小生成树模板伪代码: G为图,一般为全局变量,数组d为顶点与集合s的最短距离 Prim(G, d[]){ 初始化; for (循环n次){ u = 使d[u]最小的还未访问的顶点的标号; 记u 已被访问; for(从u出发到达的所...

Lucky小黄人的博客 168

prim算法求最小生成树(模板题)

描述 使用prim算法求某图的最小生成树的边的权值输出的序列。例如下图的最小生成树的权值输出序列为1 4 2 5 3,要求从V1顶点开始生成最小生成树。 输入 若干行整数 第一行为两个整数,分别为图的顶点数和边数 第二行开始是该图的邻接矩阵,主对角线统一用0表示,无直接路径的两点用100来表示(保证各边权值小于100) 输出 若干用空格隔开的整数 样例输入 6 10 0 6 1...

一身清贫怎敢入繁华 4163

Prim算法:求解无向带权图的最小生成树

Prim算法通过不断选择与生成树距离最小的顶点来逐步构建最小生成树。算法从一个起始顶点开始,每次选择与当前生成树最小的顶点,并将该顶点加入生成树中,直到生成树涵盖了图的所有顶点。pair是C++标准库中提供的一种模板类,用于存储两个值的有序对。它可以将两个不同类型的值组合在一起,并提供了方便的访问和操作方法。在Prim算法的示例代码中,被用作边的表示,其中第一个int表示顶点的索引,第二个int表示边的权重。通过使用pair,可以将这两个相关的值打包在一起,方便地进行传递和处理。

2301_80082574的博客 1385

图论 15. 最小生成树之prim算法

53. 寻宝(第七期模拟笔试)代码随想录卡码网无难度标识思路:(完全不知道怎么做啊,直接摘录代码随想录作为备忘)本题是最小生成树的模板题,那么我们来讲一讲最小生成树。最小生成树可以使用prim算法也可以使用kruskal算法计算出来。本篇我们先讲解prim算法。最小生成树是所有节点的最小连通子图,即:以最小的成本(边的权值)将图中所有节点链接到一起。图中有n个节点,那么一定可以用n-1条边将所有节点连接到一起。(重要论断)那么如何选择这n-1条边就是最小生成树算法的任务所在。prim算法是从节点的角度,采用

m0_49844155的博客 1644

AcWing - Prim算法求最小生成树(Prim)

题目链接:https://www.acwing.com/problem/content/description/860/ 时/空限制:1s / 64MB 题目描述 给定一个n个点m条边的无向图,图中可能存在重边和自环,边权可能为负数。 求最小生成树的树边权重之和,如果最小生成树不存在则输出impossible。 给定一张边带权的无向图G=(V, E),其中V表示图中点的集合,E表示图中边的...

ityanger的技术栈 2476

最小生成树 (prim 模板)

题目链接 存个模板!! prim:时间复杂度是V*V(v是节点的个数)。 该算法巧妙的利用了,最小生成树的切分性质:给定任意切分,横切边最小的边必然属于最小生成树。 #include <bits/stdc++.h> using namespace std; const int maxn = 105,inf = 1e9; int a[maxn][maxn],mn[max...

我是蒋卫升呀~ 371
上一篇: 个人模板 Kruskal 最小生成树
下一篇: POJ3254 Corn Fields(状压DP)
信鸦
博客等级 码龄10年 10粉丝 133原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值