代码随想录算法训练营第五十七天|图论part7

prim算法精讲

普利姆算法用于求最小生成树

三步:

1.选择离树最近的点

2.该点加入树

3.更新距离表

cpp 复制代码
#include <iostream>
#include <vector>
#include <climits>
using namespace std;


int main(){
    int v,e;
    cin>>v>>e;
    vector<vector<int>>grid(v+1,vector<int>(v+1,10001));
    for(int i=0;i<e;i++){
        int v1,v2,val;
        cin>>v1>>v2>>val;
        grid[v1][v2]=val;
        grid[v2][v1]=val;
    }
    vector<int>minDist(v+1,10001);
    vector<bool>isInTree(v+1,false);
    for(int j=1;j<v;j++){
        //第一步选取距离最小的点
        int min=INT_MAX;   
        int cur;
        for(int i=1;i<=v;i++){    
            if(!isInTree[i]&&minDist[i]<min){
                
                min=minDist[i];
                cur=i;
            }
        }
        //当前节点加入集合
        isInTree[cur]=true;
        //更新当前minDist
        for(int i=1;i<=v;i++){
            if(!isInTree[i]&&grid[cur][i]<minDist[i]){
                minDist[i]=grid[cur][i];
            }
        }
    }
    int ans=0;
    for(int i=2;i<=v;i++){
        ans+=minDist[i];
    }
    cout<<ans;

}

注意!!!vector<vector<int>>grid(v+1,vector<int>(v+1,10001));

这一行很重要

不能初始化为0 这样不存在的边的权值为0 ,应该把不存在的边的权值设为最大值!!!!!!!

kruskal算法精讲

lambda表达式:

一句话:

"一次性、匿名、可调用对象 ",本质上编译器帮你生成一个未命名的函数对象类(closure type)。

"方括号抓变量,圆括号写参数,箭头指返回,花括号干正事。"

capture \] ( parameter_list ) { body } ```cpp #include #include #include using namespace std; int n=10000; struct edge{ int v1,v2,val; edge(int _v1,int _v2,int _val):v1(_v1),v2(_v2),val(_val){} }; vectorfather(n+1,0); void init(){ for(int i=0;i>v>>e; vectoredges; for(int i=0;i>v1>>v2>>val; edges.push_back(edge(v1,v2,val)); } //排序 sort(edges.begin(),edges.end(),[](edge &a,edge &b){ return a.val

相关推荐
xie_pin_an15 小时前
深入浅出 C 语言数据结构:从线性表到二叉树的实战指南
c语言·数据结构·图论
Maỿbe1 天前
力扣hot图论部分
算法·leetcode·图论
Bruce_kaizy1 天前
c++图论————图的基本与遍历
c++·算法·图论
_OP_CHEN1 天前
【算法基础篇】(三十五)图论基础之最小生成树:从原理到实战,彻底吃透 Prim 与 Kruskal 算法
算法·蓝桥杯·图论·最小生成树·kruskal算法·prim算法·acm/icpc
浔川python社1 天前
C++小程序编写系列(2)
c++·算法·图论
qq_418247882 天前
恒源云/autodl与pycharm远程连接
ide·人工智能·python·神经网络·机器学习·pycharm·图论
m0_639397292 天前
代码随想录算法训练营第五十天|图论理论基础,深搜理论基础,98. 所有可达路径,广搜理论基础
算法·图论
做怪小疯子3 天前
LeetCode 热题 100——图论——岛屿数量&腐烂的橘子&课程表
算法·leetcode·图论
_OP_CHEN3 天前
【算法基础篇】(三十四)图论基础深度解析:从概念到代码,玩转图的存储与遍历
算法·蓝桥杯·图论·dfs·bfs·算法竞赛·acm/icpc
@我漫长的孤独流浪4 天前
程序综合实践第十二周-二叉树
算法·深度优先·图论