BFS在入队还是出队时记录距离

如果可以确定先入队的距离一定更小的话,则可以(先判断是否为初始值,如果是初始值,可以入队,则)在入队的时候记录距离,例如边权为1的BFS。

 

如果不能确定,

例如01BFS,可能先对1入队,再对0入队,

由于可以确保出队时是有序的,可以在出队时记录(类似dijkstra),

也可以在入队时记录距离(当前距离小于已经记录的距离),且出队时判断/更新vis(表示是否已经搜索过更小的距离,也可以不做这个判断,在下一步搜索时会直接被卡掉)。(初始化为正无穷,通用做法)

 

所以通用的做法是,初始化为正无穷,入队时判断是否小于已经记录的距离?

posted @ 2022-08-13 11:32  80k  阅读(49)  评论(0)    收藏  举报