src/lemon/max_matching.h
changeset 1221 6706c788ebb5
parent 1172 37338ae42a2b
child 1234 49d018060749
equal deleted inserted replaced
7:cde4e5b70991 8:68a7d1daac0a
    57 
    57 
    58   protected:
    58   protected:
    59 
    59 
    60     typedef typename Graph::Node Node;
    60     typedef typename Graph::Node Node;
    61     typedef typename Graph::Edge Edge;
    61     typedef typename Graph::Edge Edge;
       
    62     typedef typename Graph::UndirEdge UndirEdge;
    62     typedef typename Graph::UndirEdgeIt UndirEdgeIt;
    63     typedef typename Graph::UndirEdgeIt UndirEdgeIt;
    63     typedef typename Graph::NodeIt NodeIt;
    64     typedef typename Graph::NodeIt NodeIt;
    64     typedef typename Graph::IncEdgeIt IncEdgeIt;
    65     typedef typename Graph::IncEdgeIt IncEdgeIt;
    65 
    66 
    66     typedef UnionFindEnum<Node, Graph::template NodeMap> UFE;
    67     typedef UnionFindEnum<Node, Graph::template NodeMap> UFE;
   163     ///\c \c g.oppositeNode(v,map[v])==u holds, and now some edge
   164     ///\c \c g.oppositeNode(v,map[v])==u holds, and now some edge
   164     ///joining \c u to \c v will be an edge of the matching.
   165     ///joining \c u to \c v will be an edge of the matching.
   165     template<typename NMapE>
   166     template<typename NMapE>
   166     void readNMapEdge(NMapE& map) {
   167     void readNMapEdge(NMapE& map) {
   167      for(NodeIt v(g); v!=INVALID; ++v) {
   168      for(NodeIt v(g); v!=INVALID; ++v) {
   168 	UndirEdge e=map[v];
   169        UndirEdge e=map[v];
   169 	if ( e!=INVALID )
   170 	if ( e!=INVALID )
   170 	  _mate.set(v,g.oppositeNode(v,e));
   171 	  _mate.set(v,g.oppositeNode(v,e));
   171       } 
   172       } 
   172     } 
   173     } 
   173     
   174