给一个导航起初显示一条路,按照那条路走。当走到下一个点的时候会更新最短路,问最多更新几次,最少更新多少次。
如果走的那个点不能跟最短路距离相同,那么一定会更新。
如果到了一个导航点发现有多条最短路,最多更新次数就要累加。
我们就可以反向建边(从终点开始)。
- 在点$i\rightarrow j$,有多少$j$路径,使得到$j$后更新最短路径,就是从$i$点出发有几条最短路。
- 如果起初安排的路径上的点,不是某条最短路上的点一定会更新。
- 对于$i$,$dis[i]=dis[to]+1$,那条路径就存在最短路。
代码
1 |
|