所谓的单源最短路问题,就是我们之前遇到的 bfs 问题,它们只是求从一个起点到一个终点的距离,而不关心其它点到终点的距离!
② 多源最短路问题
所谓多源最短路问题,就是一个图中有多个起点,它们共同到达一个终点的距离,其中每一个源点的最短路径都是需要求的!
③ 多源 BFS
所谓多源 BFS,就是用 BFS 来解决边权为 1 的多元最短路问题(其它边权不适用),一般来说有两种解法,如下所示:
-
解法一:
- 暴力破解。把多源最短路问题转化为若干个单源最短路问题,这个方式是很直接的,但是大概率在多源最短路问题中是回超时的,所以我们不用这种解法!
-
解法二:
-
把所有的源点当成一个 “超级源点”,此时问题就转化为了单元最短路问题,如下图所示:
-
这种解法是已经被证明是正确的了,这里就不再证明,具体可以去网上查阅资料!
-
那对于如何转化为代码,其实只需要两步:
- 将所有的源点加入到队列中
- 一层一层的往外拓展
-
具体操作可以看后面具体的题目来理解!