When thinking about graph search algorithms, the BGL (Boost Graph Library) immediately comes to mind.
It's very well documented (there is even a book about it, see below), flexible and its design is a textbook example of great software engineering that you can learn a great deal from. If the algorithm you want is not already part of it, you can use the provided examples to implement it readily. It's also a template "header-only" library so you don't need to worry about how to build it. The code has been thoroughly reviewed and tested on multiple platforms and has been part of the Boost library since Boost 1.18 (in 2000). It's been upgraded and maintained ever since so it can be part of a solid production grade application without fear. I can't recommend it strongly enough if you are serious about graph algorithms in C++.
Besides that, you need to think about what makes your problem special and I you can use this knowledge to help the algorithm. Without specific knowledge, you should just use the simplest method/implementation that is fast enough for you. After that, if you design your data structure right (like Boost), you can always change for a better algorithm later without impacting the rest of your work.
Thanks Bruno Martin for this information, However, my question still remains. As you said, i can use this knowledge to develop my own. I'm looking for the best approaches developed so far in the research community for stated scenarios. Unfortunately, those methods are not yet available in Boost library, even they exist then still i don't know which one is the best.