当前位置: 首页 > news >正文

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

prim算法精讲


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

三步:

1.选择离树最近的点

2.该点加入树

3.更新距离表

#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;//更新当前minDistfor(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 }

#include <iostream>
#include <vector>
#include <algorithm>
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){}
};
vector<int>father(n+1,0);void init(){for(int i=0;i<father.size();i++){father[i]=i;}
};
int find(int x){if(father[x]==x)return x;else return father[x]=find(father[x]);
}bool isSame(int x,int y){x=find(x);y=find(y);return x==y;
}void join(int u, int v){u=find(u);v=find(v);if(u==v) return ;father[v]=u;
}int main(){//数据读取int v,e;cin>>v>>e;vector<edge>edges;for(int i=0;i<e;i++){int v1,v2,val;cin>>v1>>v2>>val;edges.push_back(edge(v1,v2,val));}//排序sort(edges.begin(),edges.end(),[](edge &a,edge &b){return a.val<b.val;});int ans=0;init();//贪心选择for(auto _e:edges){int l=_e.v1;int r=_e.v2;int val=_e.val;if(isSame(l,r)){   //不是同一个集合的continue;}else{join(l,r);ans+=val;}}cout<<ans;
}

http://www.dtcms.com/a/308699.html

相关文章:

  • 物联网与AI深度融合,赋能企业多样化物联需求
  • Unity插件——Simple Waypoint System的使用总结
  • Apifox 7 月更新|通过 AI 命名参数及检测接口规范、在线文档支持自定义 CSS 和 JavaScript、鉴权能力升级
  • 20250731解决RK3588的AIOT参考设计刷机之后可以启动但是断电进MASKROM模式
  • 蓝牙LMP版本交换过程
  • 以AI大模型重构教育新生态,打造“教-学-练-辅-评”一体化智能平台
  • 为什么Android主线程与java主线程不同,不会退出?
  • 分布式系统的基石:ZooKeeper架构设计与实战指南
  • 【抄袭】思科交换机DAI(动态ARP监控)配置测试
  • 云上服务器常见的存储方式和类型
  • 自监督学习
  • get和post的请求在request里的应用与区别
  • 机器视觉的家电薄膜开关丝印应用
  • 前端 vue 第三方工具包详解-小白版
  • Data Processer
  • QQ输入法设置快捷键,更快造词或自定义短语
  • 智慧零售商品识别准确率↑32%:陌讯多模态融合算法实战解析
  • 2025年IntelliJ IDEA最新下载、安装教程,附详细图文
  • 人工智能如何助力工业领域实现可持续发展?
  • 循环神经网络RNN原理精讲,详细举例!
  • 人工智能与新闻传播:信息传播的变革
  • vue-seamless-scroll 与 echarts 三联水球图循环滚动的渲染难题-出现短暂空白
  • el-button长按触发事件(含未响应的解决方案)
  • 【AI大模型】披着羊皮的狼--自动化生成越狱提示的系统(ReNeLLM)
  • QtConcurrent::run函数
  • React 项目环境如何安装使用?
  • es的histogram直方图聚合和terms分组聚合
  • pig Cloud中分布式锁的使用(setIfAbsent)
  • 扫描发票自动录入财务系统怎么做?
  • 定点数 与 浮点数