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

信奥赛C++提高组csp-s之Dijkstra算法(朴素版)

信奥赛C++提高组csp-s之Dijkstra算法(朴素版)

邻接表+Dijkstra求解最短路(基础版)

题目描述

如题,给出一个有向图,请输出从某一点出发到所有点的最短路径长度。

输入格式

第一行包含三个整数n , m , s n,m,sn,m,s,分别表示点的个数、有向边的个数、出发点的编号。

接下来m mm行每行包含三个整数u , v , w u,v,wu,v,w,表示一条u → v u \to vuv的,长度为w ww的边。

输出格式

输出一行n nn个整数,第i ii个表示s ss到第i ii个点的最短路径,若不能到达则输出2 31 − 1 2^{31}-12311

输入样例
4 6 1 1 2 2 2 3 2 2 4 1 1 3 5 3 4 3 1 4 4
输出样例
0 2 4 3
说明/提示

【数据范围】
对于20 % 20\%20%的数据:1 ≤ n ≤ 5 1\le n \le 51n51 ≤ m ≤ 15 1\le m \le 151m15
对于40 % 40\%40%的数据:1 ≤ n ≤ 100 1\le n \le 1001n1001 ≤ m ≤ 10 4 1\le m \le 10^41m104
对于70 % 70\%70%的数据:1 ≤ n ≤ 1000 1\le n \le 10001n10001 ≤ m ≤ 10 5 1\le m \le 10^51m105
对于100 % 100\%100%的数据:1 ≤ n ≤ 10 4 1 \le n \le 10^41n1041 ≤ m ≤ 5 × 10 5 1\le m \le 5\times 10^51m5×1051 ≤ u , v ≤ n 1\le u,v\le n1u,vnw ≥ 0 w\ge 0w0∑ w < 2 31 \sum w< 2^{31}w<231,保证数据随机。

两个点之间可能有多条边,敬请注意。


题目分析:
  • 求从起点s到每个点的最短距离
  • 如果无法到达则输出2 31 − 1 2^{31}-12311
  • 节点数n ≤ 10 4 ,边数 m ≤ 5 × 10 5 n≤10^4,边数m≤5×10^5n104,边数m5×105
  • 适合使用邻接表存储,基础Dijkstra可过
代码实现:
#include<bits/stdc++.h>usingnamespacestd;constlonglongINF=(1LL<<31)-1;// 2^31-1constintMAXN=10005;intn,m,s;structEdge{intto;// 目标节点intweight;// 边权重};// 邻接表存储图vector<Edge>graph[MAXN];// 存储起点到各点的最短距离longlongdist[MAXN];// 标记节点是否已确定最短路径boolvisited[MAXN];voiddijkstra(intstart){// 初始化for(inti=1;i<=n;i++){dist[i]=INF;visited[i]=false;}dist[start]=0;// 循环n次,每次确定一个节点的最短路径for(inti=1;i<=n;i++){// 步骤1:从未确定节点中找到距离起点最近的节点intu=-1;longlongminDist=INF;for(intj=1;j<=n;j++){if(!visited[j]&&dist[j]<minDist){minDist=dist[j];u=j;}}// 标记节点u已确定最短路径visited[u]=true;// 步骤2:松弛操作,更新u的邻居节点的距离for(constEdge&edge:graph[u]){intv=edge.to;intw=edge.weight;// 如果通过u到v的距离更短,则更新if(!visited[v]&&dist[u]+w<dist[v]){dist[v]=dist[u]+w;}}}}intmain(){ios::sync_with_stdio(false);cin.tie(0);cin>>n>>m>>s;// 读取边信息,构建邻接表for(inti=1;i<=m;i++){intu,v,w;cin>>u>>v>>w;graph[u].push_back({v,w});}// 执行Dijkstra算法dijkstra(s);// 输出结果for(inti=1;i<=n;i++){cout<<dist[i]<<" ";}cout<<endl;return0;}

更多系列知识,请查看专栏:《信奥赛C++提高组csp-s知识详解及案例实践》:
https://blog.csdn.net/weixin_66461496/category_13113932.html

配套视频课信奥赛C++提高组csp-s知识详解
https://edu.csdn.net/course/detail/41081


各种学习资料,助力大家一站式学习和提升!!!

#include<bits/stdc++.h>usingnamespacestd;intmain(){cout<<"########## 一站式掌握信奥赛知识! ##########";cout<<"############# 冲刺信奥赛拿奖! #############";cout<<"###### 课程购买后永久学习,不受限制! ######";return0;}

1、csp信奥赛高频考点知识详解及案例实践:

CSP信奥赛C++动态规划:
https://blog.csdn.net/weixin_66461496/category_13096895.html点击跳转

CSP信奥赛C++标准模板库STL:
https://blog.csdn.net/weixin_66461496/category_13108077.html 点击跳转

信奥赛C++提高组csp-s知识详解及案例实践:
https://blog.csdn.net/weixin_66461496/category_13113932.html

2、csp信奥赛冲刺一等奖有效刷题题解:

信奥赛C++普及组csp-j初赛&复赛真题题解(持续更新)https://blog.csdn.net/weixin_66461496/category_12808781.html 点击跳转

信奥赛C++提高组csp-s初赛&复赛真题题解(持续更新)
https://blog.csdn.net/weixin_66461496/category_13125089.html

3、GESP C++考级真题题解:

GESP(C++ 一级+二级+三级)真题题解(持续更新):https://blog.csdn.net/weixin_66461496/category_12858102.html 点击跳转

GESP(C++ 四级+五级+六级)真题题解(持续更新):https://blog.csdn.net/weixin_66461496/category_12869848.html 点击跳转


GESP(C++ 七级+八级)真题题解(持续更新):
https://blog.csdn.net/weixin_66461496/category_13117178.html

4、csp/信奥赛C++,完整信奥赛系列课程(永久学习):

https://edu.csdn.net/lecturer/7901 点击跳转

· 文末祝福 ·

#include<bits/stdc++.h>usingnamespacestd;intmain(){cout<<"跟着王老师一起学习信奥赛C++";cout<<" 成就更好的自己! ";cout<<" csp信奥赛一等奖属于你! ";return0;}
http://www.jsqmd.com/news/996097/

相关文章:

  • 从用户体验出发:优化微信小程序双验证码登录的3个关键点(防刷与易用性平衡)
  • 2026年长城雪茄购买渠道全解析:从成都到香港,哪里买更靠谱? - 优质品牌商家
  • 骁龙X2 Elite边缘AI应用开发实战(3): 端侧智能语音助手全链路实现
  • Spring Boot 实现过滤器(Filter)三种常用方式
  • 2026年新发布针织衫品牌厂商有哪些?实力工厂的选型与推荐 - 品牌鉴赏官2026
  • 避开OV5640时钟配置的坑:PCLK计算不准导致图像异常的排查与修复指南
  • ComfyUI-LTXVideo:零基础到专业级AI视频生成的终极指南
  • OpenClaw+AWS 深度应用:自动生成 CloudFormation 模板、批量管理 S3 存储桶
  • 如何在Obsidian中构建你的微信读书知识库:终极同步指南
  • 第31篇:AI时代的前端工作流
  • Vivado Utility Buffer IP全解析:从IBUFDS到BUFGCE,手把手教你时钟与IO缓冲器选型
  • 保姆级教程:用STM32的MPU为你的AUTOSAR应用划清内存“地盘”(附代码)
  • 不止看功耗:Vivado里Report RAM和Control Sets的隐藏用法与优化技巧
  • Go 微服务 Saga 模式:分布式事务的补偿与一致性实践
  • 3D大模型位置编码:C2RoPE的创新与突破
  • 2026年6月东莞制造业升级,3M VHB GPL160平台选择全攻略 - 品牌鉴赏官2026
  • 5分钟掌握PKHeX自动合法性插件:让宝可梦数据合规变得简单
  • 5分钟快速上手:免费开源的暗黑破坏神2存档编辑器完整指南
  • 北邮网络课设:VC6.0下用select实现的轻量级DNS中继服务源码包
  • 如何用foobox三分钟打造专业音乐播放器:foobar2000终极美化指南
  • 2026年球场护栏网安装厂家怎么选?四川及全国主流服务商综合分析与案例参考 - 优质品牌商家
  • 别再为测正负电压发愁了!手把手教你用LTspice仿真两种绝对值电路(附ADA4522/LT1001实测对比)
  • 【趣味算法】韩信点兵:从枚举到中国剩余定理(附多语言源码)
  • 别再说佳明不准了!手把手教你校准fēnix 7X心率,搞定极限运动数据漂移
  • 从SPI到QSPI:当你的SD卡和Flash嫌SPI太慢时,我们该怎么办?
  • 给3DGS/NeRF新手的球面谐波(SH)极简图解:从‘外星生物’到‘颜色魔法’
  • 新手也能懂:手把手带你逆向分析一个CrackMe程序(附注册机C++源码)
  • Mermaid Live Editor终极指南:5分钟掌握实时图表编辑神器
  • 地下水耦合建模全景解析暨SWAT-MODFLOW地表与地下协同模拟及多情景专题应用
  • 如何利用7zip批量测试功能快速恢复加密压缩包访问权限:ArchivePasswordTestTool完整指南