57         Edge(ue), forward(_forward) {} | 
    57         Edge(ue), forward(_forward) {} | 
    58   | 
    58   | 
    59     public:  | 
    59     public:  | 
    60       Arc() {} | 
    60       Arc() {} | 
    61   | 
    61   | 
    62       /// Invalid arc constructor  | 
    62       // Invalid arc constructor  | 
    63       Arc(Invalid i) : Edge(i), forward(true) {} | 
    63       Arc(Invalid i) : Edge(i), forward(true) {} | 
    64   | 
    64   | 
    65       bool operator==(const Arc &that) const { | 
    65       bool operator==(const Arc &that) const { | 
    66         return forward==that.forward && Edge(*this)==Edge(that);  | 
    66         return forward==that.forward && Edge(*this)==Edge(that);  | 
    67       }  | 
    67       }  | 
    72         return forward<that.forward ||  | 
    72         return forward<that.forward ||  | 
    73           (!(that.forward<forward) && Edge(*this)<Edge(that));  | 
    73           (!(that.forward<forward) && Edge(*this)<Edge(that));  | 
    74       }  | 
    74       }  | 
    75     };  | 
    75     };  | 
    76   | 
    76   | 
    77   | 
    77     /// First node of the edge  | 
    78   | 
    78     Node u(const Edge &e) const { | 
    79     using Parent::source;  | 
    79       return Parent::source(e);  | 
    80   | 
    80     }  | 
    81     /// Source of the given Arc.  | 
    81   | 
         | 
    82     /// Source of the given arc  | 
    82     Node source(const Arc &e) const { | 
    83     Node source(const Arc &e) const { | 
    83       return e.forward ? Parent::source(e) : Parent::target(e);  | 
    84       return e.forward ? Parent::source(e) : Parent::target(e);  | 
    84     }  | 
    85     }  | 
    85   | 
    86   | 
    86     using Parent::target;  | 
    87     /// Second node of the edge  | 
    87   | 
    88     Node v(const Edge &e) const { | 
    88     /// Target of the given Arc.  | 
    89       return Parent::target(e);  | 
         | 
    90     }  | 
         | 
    91   | 
         | 
    92     /// Target of the given arc  | 
    89     Node target(const Arc &e) const { | 
    93     Node target(const Arc &e) const { | 
    90       return e.forward ? Parent::target(e) : Parent::source(e);  | 
    94       return e.forward ? Parent::target(e) : Parent::source(e);  | 
    91     }  | 
    95     }  | 
    92   | 
    96   | 
    93     /// \brief Directed arc from an edge.  | 
    97     /// \brief Directed arc from an edge.  | 
    94     ///  | 
    98     ///  | 
    95     /// Returns a directed arc corresponding to the specified Edge.  | 
    99     /// Returns a directed arc corresponding to the specified edge.  | 
    96     /// If the given bool is true the given edge and the  | 
   100     /// If the given bool is true, the first node of the given edge and  | 
    97     /// returned arc have the same source node.  | 
   101     /// the source node of the returned arc are the same.  | 
    98     static Arc direct(const Edge &ue, bool d) { | 
   102     static Arc direct(const Edge &e, bool d) { | 
    99       return Arc(ue, d);  | 
   103       return Arc(e, d);  | 
   100     }  | 
   104     }  | 
   101   | 
   105   | 
   102     /// Returns whether the given directed arc is same orientation as the  | 
   106     /// Returns whether the given directed arc has the same orientation  | 
   103     /// corresponding edge.  | 
   107     /// as the corresponding edge.  | 
   104     ///  | 
   108     ///  | 
   105     /// \todo reference to the corresponding point of the undirected digraph  | 
   109     /// \todo reference to the corresponding point of the undirected digraph  | 
   106     /// concept. "What does the direction of an edge mean?"  | 
   110     /// concept. "What does the direction of an edge mean?"  | 
   107     static bool direction(const Arc &e) { return e.forward; } | 
   111     static bool direction(const Arc &a) { return a.forward; } | 
   108   | 
         | 
   109   | 
   112   | 
   110     using Parent::first;  | 
   113     using Parent::first;  | 
   111     using Parent::next;  | 
   114     using Parent::next;  | 
   112   | 
   115   | 
   113     void first(Arc &e) const { | 
   116     void first(Arc &e) const { |