单源最短路——最短路计数

该博客探讨了一种无向无权图的单源最短路计数问题。给定一个图,从顶点1出发,需要计算到达每个顶点的不同最短路径数量。题目对输入输出格式、数据范围进行了说明,并提供了样例。博主指出,常规方法是找到最短路径长度后再统计路径,但可以利用DP思想,将问题转化为求最短路为特定长度的路径数量。虽然DP通常需要拓扑序,但在最短路树上,Dijkstra或BFS算法可以满足这一条件,而SPFA则不行。因此,建议使用Dijkstra或BFS来解决这个问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

最短路计数

给出一个 N 个顶点 M 条边的无向无权图,顶点编号为 1 到 N。

问从顶点 1 开始,到其他每个点的最短路有几条。

输入格式
第一行包含 2 个正整数 N,M,为图的顶点数与边数。

接下来 M 行,每行两个正整数 x,y,表示有一条顶点 x 连向顶点 y 的边,请注意可能有自环与重边。

输出格式
输出 N 行,每行一个非负整数,第 i 行输出从顶点 1 到顶点 i 有多少条不同的最短路,由于答案有可能会很大,你只需要输出对 100003 取模后的结果即可。

如果无法到达顶点 i 则输出 0。

数据范围
1≤N≤1051≤N≤10^51N105,
1≤M≤2×1051≤M≤2×10^51M2×10

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值