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

代码随想录算法训练营第六十四天|卡码网KamaCoder47. 参加科学大会、94. 城市间货物运输 I

47. 参加科学大会

题目链接:47. 参加科学大会
B站讲解

#include<iostream>#include<vector>#include<list>#include<queue>#include<climits>usingnamespacestd;// 小顶堆classmycomparison{public:booloperator()(constpair<int,int>&lhs,constpair<int,int>&rhs){returnlhs.second>rhs.second;}};// 定义一个结构体来表示带权重的边structEdge{intto;// 邻接顶点intval;// 边的权重Edge(intt,intw):to(t),val(w){}// 构造函数};intmain(){intn,m,p1,p2,val;cin>>n>>m;vector<list<Edge>>grid(n+1);for(inti=0;i<m;i++){cin>>p1>>p2>>val;// p1 指向 p2,权值为 valgrid[p1].push_back(Edge(p2,val));}intstart=1;// 起点intend=n;// 终点// 存储从源点到每个节点的最短距离std::vector<int>minDist(n+1,INT_MAX);// 记录顶点是否被访问过std::vector<bool>visited(n+1,false);// 优先队列中存放 pair<节点,源点到该节点的权值>priority_queue<pair<int,int>,vector<pair<int,int>>,mycomparison>pq;// 初始化队列,源点到源点的距离为0,所以初始为0pq.push(pair<int,int>(start,0));minDist[start]=0;// 起始点到自身的距离为0while(!pq.empty()){// 1. 第一步,选源点到哪个节点近且该节点未被访问过 (通过优先级队列来实现)// <节点, 源点到该节点的距离>pair<int,int>cur=pq.top();pq.pop();if(visited[cur.first])continue;// 2. 第二步,该最近节点被标记访问过visited[cur.first]=true;// 3. 第三步,更新非访问节点到源点的距离(即更新minDist数组)for(Edge edge:grid[cur.first]){// 遍历 cur指向的节点,cur指向的节点为 edge// cur指向的节点edge.to,这条边的权值为 edge.valif(!visited[edge.to]&&minDist[cur.first]+edge.val<minDist[edge.to]){// 更新minDistminDist[edge.to]=minDist[cur.first]+edge.val;pq.push(pair<int,int>(edge.to,minDist[edge.to]));}}}if(minDist[end]==INT_MAX)cout<<-1<<endl;// 不能到达终点elsecout<<minDist[end]<<endl;// 到达终点最短路径}

94. 城市间货物运输 I

题目链接: 94. 城市间货物运输 I
B站讲解

#include<iostream>#include<vector>#include<list>#include<climits>usingnamespacestd;intmain(){intn,m,p1,p2,val;cin>>n>>m;vector<vector<int>>grid;// 将所有边保存起来for(inti=0;i<m;i++){cin>>p1>>p2>>val;// p1 指向 p2,权值为 valgrid.push_back({p1,p2,val});}intstart=1;// 起点intend=n;// 终点vector<int>minDist(n+1,INT_MAX);minDist[start]=0;for(inti=1;i<n;i++){// 对所有边 松弛 n-1 次for(vector<int>&side:grid){// 每一次松弛,都是对所有边进行松弛intfrom=side[0];// 边的出发点intto=side[1];// 边的到达点intprice=side[2];// 边的权值// 松弛操作// minDist[from] != INT_MAX 防止从未计算过的节点出发if(minDist[from]!=INT_MAX&&minDist[to]>minDist[from]+price){minDist[to]=minDist[from]+price;}}}if(minDist[end]==INT_MAX)cout<<"unconnected"<<endl;// 不能到达终点elsecout<<minDist[end]<<endl;// 到达终点最短路径}
http://www.jsqmd.com/news/438132/

相关文章:

  • 别再写烂大街项目了!这 10 个 SpringBoot 实战题目,毕设 / 求职直接封神
  • PHP依赖注入的庖丁解牛
  • 豆包推广联系电话是多少?如何对接第三方豆包 GEO 服务商? - 品牌2026
  • 3D文件格式基础指南,3D商务中最受欢迎的3D文件格式
  • PHP禁止在事务中进行 RPC 调用、文件 IO 或长时间计算。
  • 【边打字.边学昆仑正义文化】_8_宇宙正邪生命的区别(1)
  • MySQL 锁机制的庖丁解牛
  • 2026年总结保定室内全案设计正规企业,推荐哪家 - myqiye
  • 2026工业烘干除尘设备优质推荐指南 - 优质品牌商家
  • 2026年在哪个平台订机票更省心?实用选择指南 - 品牌排行榜
  • 网站打开提示:”No input file specifed.“-PbootCMS网站常见报错
  • GLB/GLTF格式:其工作原理、使用场景及你应了解的优缺点
  • 2026年高压风机厂家推荐:专业高压风机/优质高压风机/高品质高压风机供应商精选——无锡市格之凌机电设备有限公司专业选型指南 - 品牌推荐官
  • 这只“小龙虾”不简单:OpenClaw爆火背后的故事与机会
  • PbootCMS网站友情链接标签
  • 后台图片上传提示:”上传失败:存储目录创建失败!-PbootCMS网站常见报错
  • 山东一卡通回收如何选择靠谱平台?团团收是您的首选 - 团团收购物卡回收
  • 山东一卡通回收首选团团收:快速、便捷、高价保障 - 团团收购物卡回收
  • 一键实现windows文件批量操作管理,提高效率
  • pip换源
  • PbootCMS网站标签用于调取网站与公司相关的信息
  • 在Python中用any-singleton实现单例模式
  • 2026年3月青岛控制度数眼镜品牌推荐,专业验光与品牌保障口碑之选 - 品牌鉴赏师
  • 豆包上怎么出现自己的公司?揭秘 AI 时代的 GEO 获客新方案 - 品牌2026
  • PbootCMS网站常见站点信息标签 适用范围:全站任意地方均可使用
  • 山东一卡通回收攻略:团团收让您的闲置卡秒变收益 - 团团收购物卡回收
  • 选择团团收,让山东一卡通回收更专业、更安心 - 团团收购物卡回收
  • 网站后台登录提示:”登录失败:数据库目录写入权限不足!“-PbootCMS网站常见报错
  • 这次终于选对的一键生成论文工具,千笔写作工具 VS 学术猹,专为研究生量身打造!
  • 2026年3月德州扑克教学培训班推荐,专业教学与口碑保障之选 - 品牌鉴赏师