浅谈最短路计数
问题描述:
$N$个顶点$M$条边的无向无权图,顶点编号为1−$N$。问从顶点1开始,到其他每个点的最短路有几条。
概念:
我们可以找出一个图的最短路,这张图有不同路径满足这个路径最短的限制。求不同路径数量称为最短路计数。
思路:
在跑最短路的时候用$Cnt$数组记录最短路条数。($Dij$和$SPFA$都能搞)
在松弛每个点时,更新完最短路后判断是否满足$dis[to]=dis[fr]+1$,意思就是to这个点的最短路是否可以由$fr$更新。
根据加法原理,将$Cnt[fr]$加到$Cnt[to]$里。
这样就正确处理了$Cnt$数组,也就解决了问题。