diff options
| -rw-r--r-- | src/libcola/connected_components.cpp | 12 | ||||
| -rw-r--r-- | src/libvpsc/remove_rectangle_overlap.h | 5 |
2 files changed, 10 insertions, 7 deletions
diff --git a/src/libcola/connected_components.cpp b/src/libcola/connected_components.cpp index 7e72d46a7..0cf6ee45a 100644 --- a/src/libcola/connected_components.cpp +++ b/src/libcola/connected_components.cpp @@ -1,6 +1,7 @@ #include <map> -#include "cola.h" +#include <list> #include <libvpsc/remove_rectangle_overlap.h> +#include "cola.h" using namespace std; namespace cola { @@ -34,15 +35,16 @@ namespace cola { unsigned id; bool visited; vector<Node*> neighbours; + list<Node*>::iterator listPos; Rectangle* r; }; // Depth first search traversal of graph to find connected component void dfs(Node* v, - set<Node*>& remaining, + list<Node*>& remaining, Component* component, map<unsigned,pair<Component*,unsigned> > &cmap) { v->visited=true; - remaining.erase(v); + remaining.erase(v->listPos); cmap[v->id]=make_pair(component,component->node_ids.size()); component->node_ids.push_back(v->id); component->rects.push_back(v->r); @@ -66,12 +68,12 @@ namespace cola { vector<Component*> &components) { unsigned n=rs.size(); vector<Node> vs(n); - set<Node*> remaining; + list<Node*> remaining; for(unsigned i=0;i<n;i++) { vs[i].id=i; vs[i].visited=false; vs[i].r=rs[i]; - remaining.insert(&vs[i]); + vs[i].listPos = remaining.insert(remaining.end(),&vs[i]); } vector<Edge>::const_iterator ei; SimpleConstraints::const_iterator ci; diff --git a/src/libvpsc/remove_rectangle_overlap.h b/src/libvpsc/remove_rectangle_overlap.h index 82f3ef494..baa15b594 100644 --- a/src/libvpsc/remove_rectangle_overlap.h +++ b/src/libvpsc/remove_rectangle_overlap.h @@ -12,8 +12,9 @@ * * Released under GNU LGPL. Read the file 'COPYING' for more information. */ - -class vpsc::Rectangle; +namespace vpsc { + class Rectangle; +} void removeRectangleOverlap(unsigned n, vpsc::Rectangle *rs[], double xBorder, double yBorder); |
