Keep these in mind:
- You use BFS when all edges have equal weight. (usually )
- You use - BFS when edges are or . (again, usually )
- You use Dijkstra when edges have different positive weights.
- You use Bellman-Ford when negative edges exist.
For multi-source problems, sometimes we just add all sources to an initial queue.
You'll see how all these help in practice.