Aquí tienes información de un montón de algoritmos de búsqueda:
https://en.wikipedia.org/wiki/List_of_algorithms#Graph_searchEn concreto:
En profundidad ->
https://en.wikipedia.org/wiki/Depth-first_searchEn anchura o amplitud ->
https://en.wikipedia.org/wiki/Breadth-first_searchEn las referencias hay libros que te pueden ayudar.
Este por ejemplo:
Artificial Intelligence: A Modern Approach. Prentice Hall, 2003.
Este que esta en español también te puede ayudar:
Inteligencia artificial: métodos, técnicas y aplicaciones. McGraw-Hill, 2008.
Los pdf los puedes encontrar fácilmente por internet.
El lenguaje en sí es lo de menos ya que lo que importa son las estructuras de datos que haya detrás. En C++ lo más de lo más en cuanto a una complejidad temporal mínima son los diccionarios desordenados (unordered_map). Por otra parte los maps están implementados como Árboles Rojos y Negros. La idea es que tienes que comprender las estructuras de datos subyacentes.
Un saludo.