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

题解:洛谷 P1144 最短路计数

本文分享的必刷题目是从蓝桥云课洛谷AcWing等知名刷题平台精心挑选而来,并结合各平台提供的算法标签和难度等级进行了系统分类。题目涵盖了从基础到进阶的多种算法和数据结构,旨在为不同阶段的编程学习者提供一条清晰、平稳的学习提升路径。

欢迎大家订阅我的专栏:算法题解:C++与Python实现!

附上汇总贴:算法竞赛备考冲刺必刷题(C++) | 汇总


【题目来源】

洛谷:P1144 最短路计数 - 洛谷

【题目描述】

给出一个N NN个顶点M MM条边的无向无权图,顶点编号为1 ∼ N 1\sim N1N。问从顶点1 11开始,到其他每个点的最短路有几条。

【输入】

第一行包含2 22个正整数N , M N,MN,M,为图的顶点数与边数。

接下来M MM行,每行2 22个正整数x , y x,yx,y,表示有一条连接顶点x xx和顶点y yy的边,请注意可能有自环与重边。

【输出】

N NN行,每行一个非负整数,第i ii行输出从顶点1 11到顶点i ii有多少条不同的最短路,由于答案有可能会很大,你只需要输出 $ ans \bmod 100003$ 后的结果即可。如果无法到达顶点i ii则输出0 00

【输入样例】

5 7 1 2 1 3 2 4 3 4 2 3 4 5 4 5

【输出样例】

1 1 1 2 4

【算法标签】

#普及plus #图的遍历-BFS

【代码详解】

#include<bits/stdc++.h>usingnamespacestd;constintN=1000005,M=2000005*2,mod=100003;intn,m;// n: 节点数,m: 边数inth[N],e[M],ne[M],idx;// 邻接表存储图intdist[N],cnt[N];// dist: 节点到起点的最短距离,cnt: 到节点的最短路径数量vector<int>ans[N];// 未使用的数组// 添加无向边voidadd(inta,intb){e[idx]=b;// 边的终点ne[idx]=h[a];// 指向a的下一条边h[a]=idx++;// 更新a的头节点}queue<int>q;// BFS队列// 广度优先搜索,计算最短路径长度和数量voidbfs(){memset(dist,-1,sizeof(dist));// 初始化距离为-1(表示未访问)q.push(1);// 从节点1开始dist[1]=0;// 起点距离为0cnt[1]=1;// 到起点的最短路径数量为1while(!q.empty())// BFS遍历{intu=q.front();// 取出队首q.pop();// 弹出队首for(inti=h[u];i!=-1;i=ne[i])// 遍历u的所有邻接点{intv=e[i];// 邻接点vif(dist[v]==-1)// 如果v未访问{dist[v]=dist[u]+1;// 更新v的距离cnt[v]=cnt[u];// 路径数量等于u的路径数量q.push(v);// v入队}elseif(dist[v]==dist[u]+1)// 如果找到另一条最短路径{cnt[v]=(cnt[v]+cnt[u])%mod;// 累加路径数量}}}}intmain(){scanf("%d%d",&n,&m);// 输入节点数和边数memset(h,-1,sizeof(h));// 初始化邻接表while(m--)// 输入所有边{intu,v;scanf("%d%d",&u,&v);add(u,v),add(v,u);// 添加无向边}bfs();// 执行BFS计算最短路径for(inti=1;i<=n;i++)// 输出每个节点的最短路径数量printf("%d\n",cnt[i]);return0;}

【运行结果】

5 7 1 2 1 3 2 4 3 4 2 3 4 5 4 5 1 1 1 2 4
http://www.jsqmd.com/news/854155/

相关文章:

  • 从PointPillars到BEV空间:手把手拆解BEVFusion中的点云特征提取与转换全流程
  • 别等618当天!京东淘宝618抢先购今晚开抢!淘宝抢先购才是底价,口令红包 + 国补薅到爽保姆级攻略带你无脑抄底 - 资讯速览
  • 别再手动配密码了!用Authelia CLI工具一键生成Argon2id加密密码(附Docker部署避坑点)
  • BepInEx完整指南:5分钟掌握Unity游戏模组开发框架
  • 别再只会用tail -f了!用journalctl实时追踪服务日志的5个高效姿势(附systemd服务排查实战)
  • 中年运维转型实录,三十岁毅然投身网安,坚持过后皆是顺遂前程
  • 华为交换机VRRP配置实战:一个真实企业网故障排查与优化案例
  • 2026年降AI软件天梯榜,4款主流工具技术路线深度对比 - 我要发一区
  • 智慧工业轮胎X光图像金属与结构缺陷检测数据集VOC+YOLO格式896张11类别
  • 灭蚊器哪种牌子好?什么牌灭蚊灯性价比高又好用?详细测评家用灭蚊灯品牌十大排行榜最新
  • Swift Extension UIImage扩展支持加载GIF动画
  • 论文降AI率工具排行榜,2026年5月精选4款知网降AI软件 - 我要发一区
  • 保姆级教程:用5W规则搞定高速差分对布线,告别信号串扰
  • STM32CubeMX零基础实战:5分钟搞定HC-SR505人体感应模块,让你的设备学会“看人下菜碟”
  • STM32F7移植USB-CDC
  • uni-card组件进阶玩法:从基础展示到带交互的‘动态卡片’实战
  • 创业公司如何借助 Taotoken 快速试错不同大模型以确定产品原型方向
  • Python 浅拷贝与深拷贝:为什么我改了 b,a 也跟着变了?
  • AMD Ryzen处理器深度调试终极指南:从核心超频到硬件优化
  • 新手如何选择一款好用的AI编程工具
  • 2026 全球出海 GEO 技术实力与自主可控榜单:旗引云创 GEO 领跑国内,源码部署定义行业新标准 - 资讯速览
  • GitHub开发者如何快速接入Taotoken大模型API并管理密钥
  • 华为USG6000防火墙安全策略配置避坑指南:从默认策略到实战规则,新手必看
  • 智慧工业控制面板工控部件元器件LCD部件检测数据集VOC+YOLO格式365张8类别
  • 别再手动改.rou文件了!一个更稳妥的CAM350 V10.7导入Allegro槽孔文件的方法
  • 智能手表常见问题解答(2026最新专家版) - 资讯速览
  • 别再只会用1.2.3.了!LaTeX的enumitem包让你的论文列表样式瞬间专业起来
  • GeoDa空间分析避坑指南:从权重矩阵构建到双变量LISA图解读,一次讲清
  • 新手避坑指南:用STC8A单片机和TB6612模块搞定三轮循迹小车(附完整代码)
  • 2026年AI写作辅助平台实测认证:5款神器从构思到提交全流程护航