题目 大意就是求一个无向无权图的单源最短路径数。 首先,如何求一个无向无权图的最短路径,虽然可以用spfa或dijstra,复杂度分别为O(kE)和O(nlogn),但有一种稳定的O(n)算法:bfs! 我们可以对图进行bfs,再bfs的过程中进行dp,令dp[i]为所求的最短路径数,则状态转移方程为 dp[i]=sigma{dp[j]|(j,i)∈E},其中E为bfs中搜索树的边集,即只考虑在搜索树中从第k层到第(k+1)层的边,边界条件为dp[1]=1,详见代码。 code