宽搜bfs
0-1bfs
(边权只有0和1的图中求最短路)
使用双端队列(deque),每次从队头取一元素u,进行扩展v,u->v边权为0,则将v从队头插入,否则从队尾插入。(eg:http://noip.ybtoj.com.cn/contest/870/problem/4)(其他讲解:https://www.cnblogs.com/dilthey/p/9990560.html)
双起点bfs
(好吧名字自己起的)
bfs同时有两个动点,两个点同时搜。
也可以每个为起点,各搜一遍,然后用两个人到一个点的步数(或其他)判断这个点步数(或其他)。
复杂度:
- 邻接矩阵:O(n²)
- n个点m条边图:O(n+m)
一些注意事项
- 在循环中不要轻易return,可能导致有些情况搜不到(eg:http://noip.ybtoj.com.cn/contest/870/problem/2,75分就是这么拿的)
- 一个状态的每个变量都可放到结构体里并作为vis的一维。
- 当从起点向终点搜行不通时,可以从终点向起点搜(可能需要建反边)。

浙公网安备 33010602011771号