COIN-OR::LEMON - Graph Library

Changeset 1060:7a24bb2e7480 in lemon-0.x


Ignore:
Timestamp:
01/07/05 19:53:02 (15 years ago)
Author:
Mihaly Barasz
Branch:
default
Phase:
public
Convert:
svn:c9d7d8f5-90d6-0310-b91f-818b3a526b0e/lemon/trunk@1456
Message:

Nasty bug in undir_graph_extender.h

Location:
src
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • src/lemon/undir_graph_extender.h

    r1054 r1060  
    141141    template <typename E>
    142142    void _dirFirstOut(E &e, const Node &n) const {
     143      Parent::firstIn(e,n);
     144      if( UndirEdge(e) != INVALID ) {
     145        e.forward = false;
     146      }
     147      else {
     148        Parent::firstOut(e,n);
     149        e.forward = true;
     150      }
     151    }
     152    template <typename E>
     153    void _dirFirstIn(E &e, const Node &n) const {
    143154      Parent::firstOut(e,n);
    144155      if( UndirEdge(e) != INVALID ) {
     156        e.forward = false;
     157      }
     158      else {
     159        Parent::firstIn(e,n);
    145160        e.forward = true;
    146161      }
    147       else {
    148         Parent::firstIn(e,n);
    149         e.forward = false;
    150       }
    151     }
    152     template <typename E>
    153     void _dirFirstIn(E &e, const Node &n) const {
    154       Parent::firstIn(e,n);
    155       if( UndirEdge(e) != INVALID ) {
    156         e.forward = true;
    157       }
    158       else {
    159         Parent::firstOut(e,n);
    160         e.forward = false;
    161       }
    162162    }
    163163
    164164    template <typename E>
    165165    void _dirNextOut(E &e) const {
    166       if( e.forward ) {
     166      if( ! e.forward ) {
     167        Node n = Parent::target(e);
     168        Parent::nextIn(e);
     169        if( UndirEdge(e) == INVALID ) {
     170          Parent::firstOut(e, n);
     171          e.forward = true;
     172        }
     173      }
     174      else {
     175        Parent::nextOut(e);
     176      }
     177    }
     178    template <typename E>
     179    void _dirNextIn(E &e) const {
     180      if( ! e.forward ) {
     181        Node n = Parent::source(e);
    167182        Parent::nextOut(e);
    168183        if( UndirEdge(e) == INVALID ) {
    169           Parent::firstIn(e, Parent::source(e));
    170           e.forward = false;
     184          Parent::firstIn(e, n);
     185          e.forward = true;
    171186        }
    172187      }
    173188      else {
    174189        Parent::nextIn(e);
    175       }
    176     }
    177     template <typename E>
    178     void _dirNextIn(E &e) const {
    179       if( e.forward ) {
    180         Parent::nextIn(e);
    181         if( UndirEdge(e) == INVALID ) {
    182           Parent::firstOut(e, Parent::target(e));
    183           e.forward = false;
    184         }
    185       }
    186       else {
    187         Parent::nextOut(e);
    188190      }
    189191    }
     
    227229
    228230
    229     int maxId(Node n) const {
     231    int maxId(Node) const {
    230232      return Parent::maxId(Node());
    231233    }
  • src/work/jacint/bug.cc

    r1059 r1060  
    1 //lasd megjegyzes a 49-es sorban
    21#include <iostream>
    32#include <queue>
     
    76#include <lemon/invalid.h>
    87#include <lemon/list_graph.h>
     8#include <lemon/smart_graph.h>
    99#include <matching.h>
    1010
    1111using namespace lemon;
     12using namespace std;
    1213
    13 int main(int, char **) {
    1414
    15   typedef UndirListGraph Graph;
     15int main() {
     16
     17  typedef UndirSmartGraph Graph;
    1618
    1719  typedef Graph::Edge Edge;
     
    2022  typedef Graph::NodeIt NodeIt;
    2123  typedef Graph::Node Node;
     24
     25  typedef Graph::OutEdgeIt OutEdgeIt;
    2226   
    2327  Graph G;
    2428
    25   G.clear();
     29  // G.clear();
    2630  std::vector<Graph::Node> nodes;
    2731  for (int i=0; i<5; ++i)
     
    3640
    3741  for(UndirEdgeIt e(G); e!=INVALID; ++e) {
    38     std::cout<<G.id(e)<<" : "<<G.id(G.source(e))<<" " <<G.id(G.target(e))<<std::endl;
     42    std::cout<<G.id(e)<<" : "<<G.id(G.source(e))
     43             <<" " <<G.id(G.target(e))<<std::endl;
    3944  }
    4045
     
    4550  }
    4651
     52  cout << "Dev Out edges from node " << G.id(nodes[1])<<std::endl;
     53  Edge f;
     54  for(G.firstOut(f, nodes[1]); f!=INVALID; G.nextOut(f)) {
     55    cout<<"edge " << G.id(f) << " goes"
     56             <<" from "<< G.id(G.source(f))
     57             << " to " << G.id(G.target(f))<<std::endl;
     58  }
     59
     60  cout << "Out edges from node " << G.id(nodes[1])<<std::endl;
     61  for( OutEdgeIt f(G,nodes[1]); f!=INVALID; ++f ) {
     62    cout<<"edge " << G.id(f) << " goes"
     63             <<" from "<< G.id(G.source(f))
     64             << " to " << G.id(G.target(f))<<std::endl;
     65  }
     66
    4767  std::cout<<"Edges of node " << G.id(nodes[1])<<std::endl;
     68  for( IncEdgeIt f(G,nodes[1]); f!=INVALID; ++f ) {
     69    cout<<"edge " << G.id(f) << " goes"
     70             <<" from "<< G.id(G.source(f))
     71             << " to " << G.id(G.target(f))<<std::endl;
     72  }
    4873
    49   for( IncEdgeIt f(G,nodes[1]); f!=INVALID; ++f ) {
    50     std::cout<<"edge " << G.id(f)<< " goes to " << G.id(G.target(f))<<std::endl;
    51   }//ez a ket for ciklus meg lefut - bar hibas eleken iteral -, de a matching.h-s mar segfaultol
     74  //return 0;
     75
     76  //ez a ket for ciklus meg lefut - bar hibas eleken iteral -, de a
     77  //matching.h-s mar segfaultol
    5278
    5379  for( IncEdgeIt f(G,nodes[1]); f!=INVALID; ++f ) {
Note: See TracChangeset for help on using the changeset viewer.