COIN-OR::LEMON - Graph Library

Ticket #117: e3aba2c72be4.patch

File e3aba2c72be4.patch, 1.5 KB (added by Balazs Dezso, 16 years ago)
  • lemon/graph_utils.h

    # HG changeset patch
    # User Balazs Dezso <deba@inf.elte.hu>
    # Date 1215698603 -7200
    # Node ID e3aba2c72be4499ade5628680b74f8f5c1ad802d
    # Parent  e80e08222fdf7808460dffd57a003b595d0098da
    Bug fix in GraphCopy (ticket #117)
    
    diff -r e80e08222fdf -r e3aba2c72be4 lemon/graph_utils.h
    a b  
    602602        }
    603603        for (typename From::ArcIt it(from); it != INVALID; ++it) {
    604604          arcRefMap[it] = to.addArc(nodeRefMap[from.source(it)],
    605                                           nodeRefMap[from.target(it)]);
     605                                    nodeRefMap[from.target(it)]);
    606606        }
    607607      }
    608608    };
     
    628628          nodeRefMap[it] = to.addNode();
    629629        }
    630630        for (typename From::EdgeIt it(from); it != INVALID; ++it) {
    631           edgeRefMap[it] = to.addArc(nodeRefMap[from.source(it)],
    632                                        nodeRefMap[from.target(it)]);
     631          edgeRefMap[it] = to.addEdge(nodeRefMap[from.u(it)],
     632                                      nodeRefMap[from.v(it)]);
    633633        }
    634634      }
    635635    };
     
    925925      typedef typename To::Arc Value;
    926926
    927927      Value operator[](const Key& key) const {
    928         bool forward =
    929           (_from.direction(key) ==
    930            (_node_ref[_from.source(key)] == _to.source(_edge_ref[key])));
     928        bool forward = _from.u(key) != _from.v(key) ?
     929          _node_ref[_from.source(key)] ==
     930          _to.source(_to.direct(_edge_ref[key], true)) :
     931          _from.direction(key);
    931932        return _to.direct(_edge_ref[key], forward);
    932933      }
    933934