}
-vector<int> const
+Graph::EdgePath const
Graph::getReachableTo(int target, bool clear_visited)
{
- vector<int> result;
+ EdgePath result;
queue<int> Q;
if (!bfs_init(target, clear_visited, Q))
return result;
}
-vector<int> const
+Graph::EdgePath const
Graph::getReachable(int from, bool only_viewable,
- bool clear_visited)
+ bool clear_visited, set<int> excludes)
{
- vector<int> result;
+ EdgePath result;
queue<int> Q;
if (!bfs_init(from, clear_visited, Q))
return result;
int const cv = (*cit)->to;
if (!vertices_[cv].visited) {
vertices_[cv].visited = true;
- Q.push(cv);
+ if (excludes.find(cv) == excludes.end())
+ Q.push(cv);
}
}
}