Preparing for an interview.
I see two cases where each one is specially suited
BFS: When you need to find shortest path between vertices (if one exists).
DFS: If you need to find cycles in a directed graph:
Uses-case where both can be used: Finding cycle in undirected graph, Is there a path from one vertex to another
Are there any other specialized or common cases?
In general DFS is considered to be simpler (though if graph is very deep, I am assuming we can have a stack overflow due to excessive recursion). So, if both can be used for a use-case, use DFS?