Advertisement
sve_vash

Untitled

Dec 27th, 2019
195
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.83 KB | None | 0 0
  1. #include <map>
  2. #include <memory>
  3.  
  4. template<class Vertex>
  5. class BfsVisitor {
  6. public:
  7. BfsVisitor() {
  8. tree.reset( new std::map<Vertex, Vertex>);
  9. (*tree)[-1] = 0;
  10. }
  11.  
  12. void ExamineVertex(const Vertex& vertex) {
  13. (*tree)[-1] = vertex;
  14. }
  15. void DiscoverVertex(const Vertex& vertex) {
  16. (*tree)[vertex] = (*tree)[-1];
  17. }
  18.  
  19. size_t DistanceTo(const Vertex& target) const {
  20. size_t dist = 0;
  21. Vertex p = target;
  22. while (true) {
  23. if (p == 0 && (*tree).at(p) == 0) {
  24. return dist;
  25. }
  26. dist++;
  27. p = (*tree).at(p);
  28. }
  29. }
  30. Vertex Parent(const Vertex& vertex) const {
  31. return (*tree).at(vertex);
  32. }
  33.  
  34. private:
  35. std::shared_ptr<std::map<Vertex, Vertex>> tree {nullptr};
  36. // Vertex current_parent= 0;
  37. };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement