393     /// \warning An Arc pointing to a removed item  | 
   393     /// \warning An Arc pointing to a removed item  | 
   394     /// could become valid again later if new nodes are  | 
   394     /// could become valid again later if new nodes are  | 
   395     /// added to the graph.  | 
   395     /// added to the graph.  | 
   396     bool valid(Arc a) const { return Parent::valid(a); } | 
   396     bool valid(Arc a) const { return Parent::valid(a); } | 
   397   | 
   397   | 
   398     /// Change the target of \c e to \c n  | 
   398     /// Change the target of \c a to \c n  | 
   399   | 
   399   | 
   400     /// Change the target of \c e to \c n  | 
   400     /// Change the target of \c a to \c n  | 
   401     ///  | 
   401     ///  | 
   402     ///\note The <tt>ArcIt</tt>s and <tt>OutArcIt</tt>s referencing  | 
   402     ///\note The <tt>ArcIt</tt>s and <tt>OutArcIt</tt>s referencing  | 
   403     ///the changed arc remain valid. However <tt>InArcIt</tt>s are  | 
   403     ///the changed arc remain valid. However <tt>InArcIt</tt>s are  | 
   404     ///invalidated.  | 
   404     ///invalidated.  | 
   405     ///  | 
   405     ///  | 
   406     ///\warning This functionality cannot be used together with the Snapshot  | 
   406     ///\warning This functionality cannot be used together with the Snapshot  | 
   407     ///feature.  | 
   407     ///feature.  | 
   408     void changeTarget(Arc e, Node n) { | 
   408     void changeTarget(Arc a, Node n) { | 
   409       Parent::changeTarget(e,n);  | 
   409       Parent::changeTarget(a,n);  | 
   410     }  | 
   410     }  | 
   411     /// Change the source of \c e to \c n  | 
   411     /// Change the source of \c a to \c n  | 
   412   | 
   412   | 
   413     /// Change the source of \c e to \c n  | 
   413     /// Change the source of \c a to \c n  | 
   414     ///  | 
   414     ///  | 
   415     ///\note The <tt>ArcIt</tt>s and <tt>InArcIt</tt>s referencing  | 
   415     ///\note The <tt>InArcIt</tt>s referencing the changed arc remain  | 
   416     ///the changed arc remain valid. However <tt>OutArcIt</tt>s are  | 
   416     ///valid. However the <tt>ArcIt<tt>s and <tt>OutArcIt</tt>s are  | 
   417     ///invalidated.  | 
   417     ///invalidated.  | 
   418     ///  | 
   418     ///  | 
   419     ///\warning This functionality cannot be used together with the Snapshot  | 
   419     ///\warning This functionality cannot be used together with the Snapshot  | 
   420     ///feature.  | 
   420     ///feature.  | 
   421     void changeSource(Arc e, Node n) { | 
   421     void changeSource(Arc a, Node n) { | 
   422       Parent::changeSource(e,n);  | 
   422       Parent::changeSource(a,n);  | 
   423     }  | 
   423     }  | 
   424   | 
   424   | 
   425     /// Invert the direction of an arc.  | 
   425     /// Invert the direction of an arc.  | 
   426   | 
   426   | 
   427     ///\note The <tt>ArcIt</tt>s referencing the changed arc remain  | 
   427     ///\note The <tt>ArcIt</tt>s referencing the changed arc remain  | 
  1135       arcs[2 * e.id].prev_out = -1;  | 
  1135       arcs[2 * e.id].prev_out = -1;  | 
  1136       arcs[2 * e.id].next_out = nodes[n.id].first_out;  | 
  1136       arcs[2 * e.id].next_out = nodes[n.id].first_out;  | 
  1137       nodes[n.id].first_out = 2 * e.id;  | 
  1137       nodes[n.id].first_out = 2 * e.id;  | 
  1138     }  | 
  1138     }  | 
  1139   | 
  1139   | 
  1140     void changeSource(Edge e, Node n) { | 
  1140     void changeU(Edge e, Node n) { | 
  1141       if(arcs[(2 * e.id) | 1].next_out != -1) { | 
  1141       if(arcs[(2 * e.id) | 1].next_out != -1) { | 
  1142         arcs[arcs[(2 * e.id) | 1].next_out].prev_out =  | 
  1142         arcs[arcs[(2 * e.id) | 1].next_out].prev_out =  | 
  1143           arcs[(2 * e.id) | 1].prev_out;  | 
  1143           arcs[(2 * e.id) | 1].prev_out;  | 
  1144       }  | 
  1144       }  | 
  1145       if(arcs[(2 * e.id) | 1].prev_out != -1) { | 
  1145       if(arcs[(2 * e.id) | 1].prev_out != -1) { | 
  1258     ///  | 
  1258     ///  | 
  1259     /// \warning A Edge pointing to a removed item  | 
  1259     /// \warning A Edge pointing to a removed item  | 
  1260     /// could become valid again later if new edges are  | 
  1260     /// could become valid again later if new edges are  | 
  1261     /// added to the graph.  | 
  1261     /// added to the graph.  | 
  1262     bool valid(Edge e) const { return Parent::valid(e); } | 
  1262     bool valid(Edge e) const { return Parent::valid(e); } | 
  1263     /// \brief Change the source of \c e to \c n  | 
  1263     /// \brief Change the end \c u of \c e to \c n  | 
  1264     ///  | 
  1264     ///  | 
  1265     /// This function changes the source of \c e to \c n.  | 
  1265     /// This function changes the end \c u of \c e to node \c n.  | 
  1266     ///  | 
  1266     ///  | 
  1267     ///\note The <tt>ArcIt</tt>s and <tt>InArcIt</tt>s  | 
  1267     ///\note The <tt>EdgeIt</tt>s and <tt>ArcIt</tt>s referencing the  | 
  1268     ///referencing the changed arc remain  | 
  1268     ///changed edge are invalidated and if the changed node is the  | 
  1269     ///valid. However <tt>OutArcIt</tt>s are invalidated.  | 
  1269     ///base node of an iterator then this iterator is also  | 
         | 
  1270     ///invalidated.  | 
  1270     ///  | 
  1271     ///  | 
  1271     ///\warning This functionality cannot be used together with the  | 
  1272     ///\warning This functionality cannot be used together with the  | 
  1272     ///Snapshot feature.  | 
  1273     ///Snapshot feature.  | 
  1273     void changeSource(Edge e, Node n) { | 
  1274     void changeU(Edge e, Node n) { | 
  1274       Parent::changeSource(e,n);  | 
  1275       Parent::changeU(e,n);  | 
  1275     }  | 
  1276     }  | 
  1276     /// \brief Change the target of \c e to \c n  | 
  1277     /// \brief Change the end \c v of \c e to \c n  | 
  1277     ///  | 
  1278     ///  | 
  1278     /// This function changes the target of \c e to \c n.  | 
  1279     /// This function changes the end \c v of \c e to \c n.  | 
  1279     ///  | 
  1280     ///  | 
  1280     /// \note The <tt>ArcIt</tt>s referencing the changed arc remain  | 
  1281     ///\note The <tt>EdgeIt</tt>s referencing the changed edge remain  | 
  1281     /// valid. However the other iterators may be invalidated.  | 
  1282     ///valid, however <tt>ArcIt</tt>s and if the changed node is the  | 
         | 
  1283     ///base node of an iterator then this iterator is invalidated.  | 
  1282     ///  | 
  1284     ///  | 
  1283     ///\warning This functionality cannot be used together with the  | 
  1285     ///\warning This functionality cannot be used together with the  | 
  1284     ///Snapshot feature.  | 
  1286     ///Snapshot feature.  | 
  1285     void changeTarget(Edge e, Node n) { | 
  1287     void changeV(Edge e, Node n) { | 
  1286       Parent::changeTarget(e,n);  | 
  1288       Parent::changeV(e,n);  | 
  1287     }  | 
         | 
  1288     /// \brief Change the source of \c e to \c n  | 
         | 
  1289     ///  | 
         | 
  1290     /// This function changes the source of \c e to \c n.  | 
         | 
  1291     /// It also changes the proper node of the represented edge.  | 
         | 
  1292     ///  | 
         | 
  1293     ///\note The <tt>ArcIt</tt>s and <tt>InArcIt</tt>s  | 
         | 
  1294     ///referencing the changed arc remain  | 
         | 
  1295     ///valid. However <tt>OutArcIt</tt>s are invalidated.  | 
         | 
  1296     ///  | 
         | 
  1297     ///\warning This functionality cannot be used together with the  | 
         | 
  1298     ///Snapshot feature.  | 
         | 
  1299     void changeSource(Arc e, Node n) { | 
         | 
  1300       if (Parent::direction(e)) { | 
         | 
  1301         Parent::changeSource(e,n);  | 
         | 
  1302       } else { | 
         | 
  1303         Parent::changeTarget(e,n);  | 
         | 
  1304       }  | 
         | 
  1305     }  | 
         | 
  1306     /// \brief Change the target of \c e to \c n  | 
         | 
  1307     ///  | 
         | 
  1308     /// This function changes the target of \c e to \c n.  | 
         | 
  1309     /// It also changes the proper node of the represented edge.  | 
         | 
  1310     ///  | 
         | 
  1311     ///\note The <tt>ArcIt</tt>s and <tt>OutArcIt</tt>s  | 
         | 
  1312     ///referencing the changed arc remain  | 
         | 
  1313     ///valid. However <tt>InArcIt</tt>s are invalidated.  | 
         | 
  1314     ///  | 
         | 
  1315     ///\warning This functionality cannot be used together with the  | 
         | 
  1316     ///Snapshot feature.  | 
         | 
  1317     void changeTarget(Arc e, Node n) { | 
         | 
  1318       if (Parent::direction(e)) { | 
         | 
  1319         Parent::changeTarget(e,n);  | 
         | 
  1320       } else { | 
         | 
  1321         Parent::changeSource(e,n);  | 
         | 
  1322       }  | 
         | 
  1323     }  | 
  1289     }  | 
  1324     /// \brief Contract two nodes.  | 
  1290     /// \brief Contract two nodes.  | 
  1325     ///  | 
  1291     ///  | 
  1326     /// This function contracts two nodes.  | 
  1292     /// This function contracts two nodes.  | 
  1327     /// Node \p b will be removed but instead of deleting  | 
  1293     /// Node \p b will be removed but instead of deleting  |