graph-search algorithm