47 RONode* start = edges[0]->getFromNode();
48 unsigned lastStart = 0;
49 for (
unsigned i = 1; i < edges.size(); i++) {
50 if (edges[i]->getFromNode() == start) {
55 edges.erase(edges.begin(), edges.begin() + lastStart - 1);
59 RONode* end = edges.back()->getToNode();
60 size_t firstEnd = edges.size() - 1;
61 for (
unsigned i = 0; i < firstEnd; i++) {
62 if (edges[i]->getToNode() == end) {
66 if (firstEnd < edges.size() - 1) {
67 edges.erase(edges.begin() + firstEnd + 2, edges.end());
70 std::vector<RONode*> nodes;
71 for (std::vector<const ROEdge*>::iterator i = edges.begin(); i != edges.end(); ++i) {
72 nodes.push_back((*i)->getFromNode());
74 nodes.push_back(edges.back()->getToNode());
78 for (
unsigned int b = 0; b < nodes.size() && !changed; ++b) {
80 for (
unsigned int e = b + 1; e < nodes.size() && !changed; ++e) {
83 nodes.erase(nodes.begin() + b, nodes.begin() + e);
84 edges.erase(edges.begin() + b, edges.begin() + e);