1.1 --- a/lemon/smart_graph.h Thu Mar 01 16:04:12 2007 +0000
1.2 +++ b/lemon/smart_graph.h Thu Mar 01 16:47:23 2007 +0000
1.3 @@ -286,14 +286,14 @@
1.4 {
1.5 while(s.edge_num<edges.size()) {
1.6 Edge edge = edgeFromId(edges.size()-1);
1.7 - Parent::getNotifier(Edge()).erase(edge);
1.8 + Parent::notifier(Edge()).erase(edge);
1.9 nodes[edges.back().source].first_out=edges.back().next_out;
1.10 nodes[edges.back().target].first_in=edges.back().next_in;
1.11 edges.pop_back();
1.12 }
1.13 while(s.node_num<nodes.size()) {
1.14 Node node = nodeFromId(nodes.size()-1);
1.15 - Parent::getNotifier(Node()).erase(node);
1.16 + Parent::notifier(Node()).erase(node);
1.17 nodes.pop_back();
1.18 }
1.19 }
1.20 @@ -505,13 +505,23 @@
1.21
1.22 void firstInc(UEdge &edge, bool& d, const Node& v) const {
1.23 int de = nodes[v.id].first_out;
1.24 - edge.id = de / 2;
1.25 - d = ((de & 1) == 1);
1.26 + if (de != -1) {
1.27 + edge.id = de / 2;
1.28 + d = ((de & 1) == 1);
1.29 + } else {
1.30 + edge.id = -1;
1.31 + d = true;
1.32 + }
1.33 }
1.34 void nextInc(UEdge &edge, bool& d) const {
1.35 int de = (edges[(edge.id * 2) | (d ? 1 : 0)].next_out);
1.36 - edge.id = de / 2;
1.37 - d = ((de & 1) == 1);
1.38 + if (de != -1) {
1.39 + edge.id = de / 2;
1.40 + d = ((de & 1) == 1);
1.41 + } else {
1.42 + edge.id = -1;
1.43 + d = true;
1.44 + }
1.45 }
1.46
1.47 static int id(Node v) { return v.id; }
1.48 @@ -641,11 +651,11 @@
1.49 while(s.edge_num<edges.size()) {
1.50 int n=edges.size()-1;
1.51 UEdge edge=uEdgeFromId(n/2);
1.52 - Parent::getNotifier(UEdge()).erase(edge);
1.53 + Parent::notifier(UEdge()).erase(edge);
1.54 std::vector<Edge> dir;
1.55 dir.push_back(edgeFromId(n));
1.56 dir.push_back(edgeFromId(n-1));
1.57 - Parent::getNotifier(Edge()).erase(dir);
1.58 + Parent::notifier(Edge()).erase(dir);
1.59 nodes[edges[n].target].first_out=edges[n].next_out;
1.60 nodes[edges[n-1].target].first_out=edges[n-1].next_out;
1.61 edges.pop_back();
1.62 @@ -654,7 +664,7 @@
1.63 while(s.node_num<nodes.size()) {
1.64 int n=nodes.size()-1;
1.65 Node node = nodeFromId(n);
1.66 - Parent::getNotifier(Node()).erase(node);
1.67 + Parent::notifier(Node()).erase(node);
1.68 nodes.pop_back();
1.69 }
1.70 }
1.71 @@ -1023,25 +1033,25 @@
1.72 {
1.73 while(s.edge_num<edges.size()) {
1.74 UEdge edge = uEdgeFromId(edges.size()-1);
1.75 - Parent::getNotifier(UEdge()).erase(edge);
1.76 + Parent::notifier(UEdge()).erase(edge);
1.77 std::vector<Edge> dir;
1.78 dir.push_back(Parent::direct(edge, true));
1.79 dir.push_back(Parent::direct(edge, false));
1.80 - Parent::getNotifier(Edge()).erase(dir);
1.81 + Parent::notifier(Edge()).erase(dir);
1.82 aNodes[edges.back().aNode >> 1].first=edges.back().next_out;
1.83 bNodes[edges.back().bNode >> 1].first=edges.back().next_in;
1.84 edges.pop_back();
1.85 }
1.86 while(s.anode_num<aNodes.size()) {
1.87 Node node = nodeFromANodeId(aNodes.size() - 1);
1.88 - Parent::getNotifier(ANode()).erase(node);
1.89 - Parent::getNotifier(Node()).erase(node);
1.90 + Parent::notifier(ANode()).erase(node);
1.91 + Parent::notifier(Node()).erase(node);
1.92 aNodes.pop_back();
1.93 }
1.94 while(s.bnode_num<bNodes.size()) {
1.95 Node node = nodeFromBNodeId(bNodes.size() - 1);
1.96 - Parent::getNotifier(BNode()).erase(node);
1.97 - Parent::getNotifier(Node()).erase(node);
1.98 + Parent::notifier(BNode()).erase(node);
1.99 + Parent::notifier(Node()).erase(node);
1.100 bNodes.pop_back();
1.101 }
1.102 }