Advertisement
Guest User

Untitled

a guest
Oct 22nd, 2017
68
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.06 KB | None | 0 0
  1. void Edge::MakeTree()
  2. {
  3. std::queue<Vertice*> que;
  4. std::unordered_set<Vertice*> visited;
  5. //From where to start? Starting from first vertice
  6. que.push(Vertice::AllVertices.begin()->second);
  7. //in later versions, adding Number of connected components may fix problem
  8. while(que.size() != 0){
  9. Vertice* v = que.front();
  10. que.pop();
  11.  
  12. visited.insert(v);
  13. Vertice::tree.insert(v);
  14.  
  15. for (auto x : v->edges) {
  16. if (x->v1 != v && visited.find(x->v1) == visited.end()){ //ako nije ovaj cvor, nego suprotan, i ako nije posecen
  17. que.push(x->v1); //ovaj cvor je sigurno u stablu, pa i grana je onda sigurno u stablu
  18. //x sigurno pripada stablu, jer jedan cvor je deo stabla, a drugi cvor ubacujem u red koji ce
  19. //takodje biti u redu za stablo.
  20. Edge::tree.insert(x);
  21. visited.insert(x->v1);
  22. Vertice::tree.insert(x->v1);
  23. }
  24. else if (visited.find(x->v2) == visited.end()) { //ako je x->v1 == v, onda je x->v2 != v
  25. que.push(x->v2);
  26. Edge::tree.insert(x);
  27. visited.insert(x->v2);
  28. Vertice::tree.insert(x->v2);
  29. }
  30. }
  31. }
  32. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement