# HG changeset patch # User marci # Date 1075993605 0 # Node ID 72bd463289a918e9b3b384110ab2f081d3a6453b # Parent 8a39e8b9cdd78cc605104b81dc7b986320ef8d0b . diff -r 8a39e8b9cdd7 -r 72bd463289a9 src/work/bfs_iterator.hh --- a/src/work/bfs_iterator.hh Wed Feb 04 18:59:07 2004 +0000 +++ b/src/work/bfs_iterator.hh Thu Feb 05 15:06:45 2004 +0000 @@ -405,7 +405,7 @@ OutEdgeIt actual_edge; public: BfsIterator2(const Graph& _G) : G(_G), reached(G, false) { } - void pushAndSetReached(const NodeIt s) { + void pushAndSetReached(NodeIt s) { reached.set(s, true); if (bfs_queue.empty()) { bfs_queue.push(G.template first(s)); @@ -444,17 +444,15 @@ bfs_queue.pop(); if (!bfs_queue.empty()) { actual_edge=bfs_queue.front(); - } else { - actual_edge=OutEdgeIt(); - } - if (actual_edge.valid()) { - NodeIt w=G.bNode(actual_edge); - if (!reached.get(w)) { - bfs_queue.push(G.template first(w)); - reached.set(w, true); - b_node_newly_reached=true; - } else { - b_node_newly_reached=false; + if (actual_edge.valid()) { + NodeIt w=G.bNode(actual_edge); + if (!reached.get(w)) { + bfs_queue.push(G.template first(w)); + reached.set(w, true); + b_node_newly_reached=true; + } else { + b_node_newly_reached=false; + } } } } @@ -468,7 +466,6 @@ const std::queue& getBfsQueue() const { return bfs_queue; } }; - } // namespace marci #endif //BFS_ITERATOR_HH diff -r 8a39e8b9cdd7 -r 72bd463289a9 src/work/edmonds_karp.hh --- a/src/work/edmonds_karp.hh Wed Feb 04 18:59:07 2004 +0000 +++ b/src/work/edmonds_karp.hh Thu Feb 05 15:06:45 2004 +0000 @@ -41,7 +41,7 @@ } } bool valid() const { return sym.valid(); } - void augment(const T a) const { + void augment(T a) const { if (resG->G.aNode(sym)==resG->G.tail(sym)) { resG->flow.set(sym, resG->flow.get(sym)+a); } else { @@ -56,7 +56,7 @@ OutEdgeIt() { } //OutEdgeIt(const OutEdgeIt& e) { resG=e.resG; sym=e.sym; } private: - OutEdgeIt(const ResGraph& _resG, const NodeIt v) { + OutEdgeIt(const ResGraph& _resG, NodeIt v) { resG=&_resG; sym=resG->G.template first(v); while( sym.valid() && !(free()>0) ) { ++sym; } @@ -69,7 +69,7 @@ } }; - void getFirst(OutEdgeIt& e, const NodeIt v) const { + void getFirst(OutEdgeIt& e, NodeIt v) const { e=OutEdgeIt(*this, v); } void getFirst(EachNodeIt& v) const { G.getFirst(v); } @@ -82,28 +82,28 @@ } template< typename It > - It first(const NodeIt v) const { + It first(NodeIt v) const { It e; getFirst(e, v); return e; } - NodeIt tail(const EdgeIt e) const { return G.aNode(e.sym); } - NodeIt head(const EdgeIt e) const { return G.bNode(e.sym); } + NodeIt tail(EdgeIt e) const { return G.aNode(e.sym); } + NodeIt head(EdgeIt e) const { return G.bNode(e.sym); } - NodeIt aNode(const OutEdgeIt e) const { return G.aNode(e.sym); } - NodeIt bNode(const OutEdgeIt e) const { return G.bNode(e.sym); } + NodeIt aNode(OutEdgeIt e) const { return G.aNode(e.sym); } + NodeIt bNode(OutEdgeIt e) const { return G.bNode(e.sym); } - int id(const NodeIt v) const { return G.id(v); } + int id(NodeIt v) const { return G.id(v); } template class NodeMap { typename Graph::NodeMap node_map; public: NodeMap(const ResGraph& _G) : node_map(_G.G) { } - NodeMap(const ResGraph& _G, const ValueType a) : node_map(_G.G, a) { } - void set(const NodeIt nit, const ValueType a) { node_map.set(nit, a); } - ValueType get(const NodeIt nit) const { return node_map.get(nit); } + NodeMap(const ResGraph& _G, ValueType a) : node_map(_G.G, a) { } + void set(NodeIt nit, ValueType a) { node_map.set(nit, a); } + ValueType get(NodeIt nit) const { return node_map.get(nit); } }; }; @@ -116,15 +116,15 @@ typedef typename Graph::OutEdgeIt OutEdgeIt; typedef typename Graph::InEdgeIt InEdgeIt; const Graph& G; - const NodeIt s; - const NodeIt t; + NodeIt s; + NodeIt t; FlowMap& flow; const CapacityMap& capacity; typedef ResGraph AugGraph; typedef typename AugGraph::OutEdgeIt AugOutEdgeIt; typedef typename AugGraph::EdgeIt AugEdgeIt; public: - MaxFlow(const Graph& _G, const NodeIt _s, const NodeIt _t, FlowMap& _flow, const CapacityMap& _capacity) : G(_G), s(_s), t(_t), flow(_flow), capacity(_capacity) { } + MaxFlow(const Graph& _G, NodeIt _s, NodeIt _t, FlowMap& _flow, const CapacityMap& _capacity) : G(_G), s(_s), t(_t), flow(_flow), capacity(_capacity) { } bool augment() { AugGraph res_graph(G, flow, capacity); bool _augment=false; diff -r 8a39e8b9cdd7 -r 72bd463289a9 src/work/list_graph.hh --- a/src/work/list_graph.hh Wed Feb 04 18:59:07 2004 +0000 +++ b/src/work/list_graph.hh Thu Feb 05 15:06:45 2004 +0000 @@ -40,10 +40,10 @@ std::vector container; public: NodeMap(const ListGraph& _G) : G(_G), container(_G.node_id) { } - NodeMap(const ListGraph& _G, const ValueType a) : + NodeMap(const ListGraph& _G, ValueType a) : G(_G), container(_G.node_id, a) { } - void set(const NodeIt nit, const ValueType a) { container[G.id(nit)]=a; } - ValueType get(const NodeIt nit) const { return container[G.id(nit)]; } + void set(NodeIt nit, ValueType a) { container[G.id(nit)]=a; } + ValueType get(NodeIt nit) const { return container[G.id(nit)]; } }; template @@ -52,10 +52,10 @@ std::vector container; public: EdgeMap(const ListGraph& _G) : G(_G), container(_G.edge_id) { } - EdgeMap(const ListGraph& _G, const ValueType a) : + EdgeMap(const ListGraph& _G, ValueType a) : G(_G), container(_G.edge_id, a) { } - void set(const EdgeIt eit, const ValueType a) { container[G.id(eit)]=a; } - ValueType get(const EdgeIt eit) const { return container[G.id(eit)]; } + void set(EdgeIt eit, ValueType a) { container[G.id(eit)]=a; } + ValueType get(EdgeIt eit) const { return container[G.id(eit)]; } }; int node_id; @@ -226,8 +226,8 @@ //OutEdgeIt firstOutEdge(const NodeIt v) const { return OutEdgeIt(v); } //InEdgeIt firstInEdge(const NodeIt v) const { return InEdgeIt(v); } //SymEdgeIt firstSymEdge(const NodeIt v) const { return SymEdgeIt(v); } - NodeIt tail(const EdgeIt e) const { return e.tailNode(); } - NodeIt head(const EdgeIt e) const { return e.headNode(); } + NodeIt tail(EdgeIt e) const { return e.tailNode(); } + NodeIt head(EdgeIt e) const { return e.headNode(); } NodeIt aNode(const OutEdgeIt& e) const { return e.aNode(); } NodeIt aNode(const InEdgeIt& e) const { return e.aNode(); } @@ -248,18 +248,18 @@ void getFirst(EachNodeIt& v) const { v=EachNodeIt(*this); } void getFirst(EachEdgeIt& e) const { e=EachEdgeIt(*this); } - void getFirst(OutEdgeIt& e, const NodeIt& v) const { e=OutEdgeIt(v); } - void getFirst(InEdgeIt& e, const NodeIt& v) const { e=InEdgeIt(v); } - void getFirst(SymEdgeIt& e, const NodeIt& v) const { e=SymEdgeIt(v); } - void getTail(NodeIt& n, const EdgeIt& e) const { n=tail(e); } - void getHead(NodeIt& n, const EdgeIt& e) const { n=head(e); } + void getFirst(OutEdgeIt& e, NodeIt v) const { e=OutEdgeIt(v); } + void getFirst(InEdgeIt& e, NodeIt v) const { e=InEdgeIt(v); } + void getFirst(SymEdgeIt& e, NodeIt v) const { e=SymEdgeIt(v); } + //void getTail(NodeIt& n, const EdgeIt& e) const { n=tail(e); } + //void getHead(NodeIt& n, const EdgeIt& e) const { n=head(e); } - void getANode(NodeIt& n, const OutEdgeIt& e) const { n=e.aNode(); } - void getANode(NodeIt& n, const InEdgeIt& e) const { n=e.aNode(); } - void getANode(NodeIt& n, const SymEdgeIt& e) const { n=e.aNode(); } - void getBNode(NodeIt& n, const OutEdgeIt& e) const { n=e.bNode(); } - void getBNode(NodeIt& n, const InEdgeIt& e) const { n=e.bNode(); } - void getBNode(NodeIt& n, const SymEdgeIt& e) const { n=e.bNode(); } + //void getANode(NodeIt& n, const OutEdgeIt& e) const { n=e.aNode(); } + //void getANode(NodeIt& n, const InEdgeIt& e) const { n=e.aNode(); } + //void getANode(NodeIt& n, const SymEdgeIt& e) const { n=e.aNode(); } + //void getBNode(NodeIt& n, const OutEdgeIt& e) const { n=e.bNode(); } + //void getBNode(NodeIt& n, const InEdgeIt& e) const { n=e.bNode(); } + //void getBNode(NodeIt& n, const SymEdgeIt& e) const { n=e.bNode(); } //void get_invalid(NodeIt& n) { n=NodeIt(); } //void get_invalid(EdgeIt& e) { e=EdgeIt(); } //void get_invalid(OutEdgeIt& e) { e=OutEdgeIt(); } @@ -274,7 +274,7 @@ } template< typename It > - It first(const NodeIt v) const { + It first(NodeIt v) const { It e; getFirst(e, v); return e; @@ -283,29 +283,29 @@ /* for getting id's of graph objects */ /* these are important for the implementation of property vectors */ - int id(const NodeIt v) const { return v.node->id; } - int id(const EdgeIt e) const { return e.edge->id; } + int id(NodeIt v) const { return v.node->id; } + int id(EdgeIt e) const { return e.edge->id; } /* adding nodes and edges */ NodeIt addNode() { return NodeIt(_add_node()); } - EdgeIt addEdge(const NodeIt u, const NodeIt v) { + EdgeIt addEdge(NodeIt u, NodeIt v) { return EdgeIt(_add_edge(u.node, v.node)); } - void deleteNode(const NodeIt i) { + void deleteNode(NodeIt i) { while (first(i).valid()) deleteEdge(first(i)); while (first(i).valid()) deleteEdge(first(i)); _delete_node(i.node); } - void deleteEdge(const EdgeIt e) { _delete_edge(e.edge); } + void deleteEdge(EdgeIt e) { _delete_edge(e.edge); } - void setTail(const EdgeIt e, const NodeIt tail) { + void setTail(EdgeIt e, NodeIt tail) { _set_tail(e.edge, tail.node); } - void setHead(const EdgeIt e, const NodeIt head) { + void setHead(EdgeIt e, NodeIt head) { _set_head(e.edge, head.node); } @@ -328,7 +328,7 @@ friend class SymEdgeIt; protected: node_item* node; - friend int ListGraph::id(const NodeIt v) const; + friend int ListGraph::id(NodeIt v) const; public: NodeIt() : node(0) { } NodeIt(node_item* _node) : node(_node) { } @@ -360,7 +360,7 @@ friend class EachNodeIt; protected: edge_item* edge; - friend int ListGraph::id(const EdgeIt e) const; + friend int ListGraph::id(EdgeIt e) const; public: EdgeIt() : edge(0) { } //EdgeIt() { } @@ -406,7 +406,7 @@ OutEdgeIt(const NodeIt& _v) : v(_v.node) { edge=v->_first_out_edge; } public: OutEdgeIt() : EdgeIt(), v(0) { } - OutEdgeIt(const ListGraph& G, const NodeIt _v) : v(_v.node) { edge=v->_first_out_edge; } + OutEdgeIt(const ListGraph& G, NodeIt _v) : v(_v.node) { edge=v->_first_out_edge; } OutEdgeIt& operator++() { edge=edge->_next_out; return *this; } protected: NodeIt aNode() const { return NodeIt(v); } @@ -421,7 +421,7 @@ InEdgeIt(const NodeIt& _v) : v(_v.node) { edge=v->_first_in_edge; } public: InEdgeIt() : EdgeIt(), v(0) { } - InEdgeIt(const ListGraph& G, const NodeIt _v) : v(_v.node) { edge=v->_first_in_edge; } + InEdgeIt(const ListGraph& G, NodeIt _v) : v(_v.node) { edge=v->_first_in_edge; } InEdgeIt& operator++() { edge=edge->_next_in; return *this; } protected: NodeIt aNode() const { return NodeIt(v); } @@ -441,7 +441,7 @@ } public: SymEdgeIt() : EdgeIt(), v(0) { } - SymEdgeIt(const ListGraph& G, const NodeIt _v) : v(_v.node) { + SymEdgeIt(const ListGraph& G, NodeIt _v) : v(_v.node) { out_or_in=1; edge=v->_first_out_edge; if (!edge) { edge=v->_first_in_edge; out_or_in=0; }