COIN-OR::LEMON - Graph Library

Changeset 93:25ab81446a07 in lemon-0.x for src/work/alpar/f_ed_ka.h


Ignore:
Timestamp:
02/17/04 15:04:46 (20 years ago)
Author:
Alpar Juttner
Branch:
default
Phase:
public
Convert:
svn:c9d7d8f5-90d6-0310-b91f-818b3a526b0e/lemon/trunk@120
Message:

It is working...

File:
1 edited

Legend:

Unmodified
Added
Removed
  • src/work/alpar/f_ed_ka.h

    r91 r93  
    2020                                      typename Graph::EachNodeIt t)
    2121  {
     22    typedef typename Graph::NodeIt NodeIt;
    2223    typedef typename Graph::EachNodeIt EachNodeIt;
    2324    typedef typename Graph::EdgeIt EdgeIt;
     
    3031    T aug_val;
    3132
    32     for(EachEdgeIt e(G);G.valid(e);G.next(e))
     33    for(EachEdgeIt e(G);G.valid(e);G.goNext(e))
    3334      f.set(e,0);
    3435   
    35     std::queue<EachNodeIt> bfs_queue;
     36    std::queue<NodeIt> bfs_queue;
    3637    typename Graph::NodeMap<int> visited(G); //0: unvisited,
    3738                                             //1: reached by a forward edge
     
    4445  augment:
    4546   
    46     for(EachNodeIt n(G);G.valid(n);G.next(n))
     47    for(EachNodeIt n(G);G.valid(n);G.goNext(n))
    4748      visited.set(n,0);
    4849   
     
    5657    while(!bfs_queue.empty() && !visited.get(t))
    5758      {
    58         EachNodeIt n(bfs_queue.front());
    59         for(OutEdgeIt e(G,n);G.valid(e);G.next(e))
     59        NodeIt n(bfs_queue.front());
     60        bfs_queue.pop();
     61        for(OutEdgeIt e(G,n);G.valid(e);G.goNext(e))
    6062          if(f.get(e)<c.get(e) &&   //FIXME: <
    6163             !visited.get(G.bNode(e)))
    6264            {
    63               tree.set(G.bNode(e),e);
    64               visited.set(G.bNode(e),1);
     65              NodeIt nn(G.bNode(e)); //It improves nothing
     66              tree.set(nn,e);
     67              visited.set(nn,1);
     68              bfs_queue.push(nn);
    6569            }
    66         for(InEdgeIt e(G,n);G.valid(e);G.next(e))
     70        for(InEdgeIt e(G,n);G.valid(e);G.goNext(e))
    6771          if(f.get(e)>0 &&   //FIXME: >
    6872             !visited.get(G.bNode(e)))
    6973            {
    70               tree.set(G.bNode(e),e);
    71               visited.set(G.bNode(e),2);
     74              NodeIt nn(G.bNode(e));
     75              tree.set(nn,e);
     76              visited.set(nn,2);
     77              bfs_queue.push(nn);
    7278            }
    7379      }
     
    8288    while(gn!=s) if(visited.get(gn)==1)
    8389      {
    84         //FIXME: nonstandars. gcc extension!
     90        //FIXME: nonstandard gcc extension!
    8591        aug_val <?= c.get(tree.get(gn))-f.get(tree.get(gn));
    8692        gn=G.tail(tree.get(gn));
    8793      }
    8894    else {
    89       //FIXME: nonstandars. gcc extension!
     95      //FIXME: nonstandard gcc extension!
    9096      aug_val <?= f.get(tree.get(gn));
    9197      gn=G.head(tree.get(gn));
Note: See TracChangeset for help on using the changeset viewer.