[Lemon-commits] [lemon_svn] alpar: r120 - hugo/trunk/src/work/alpar
Lemon SVN
svn at lemon.cs.elte.hu
Mon Nov 6 20:37:26 CET 2006
Author: alpar
Date: Tue Feb 17 15:04:46 2004
New Revision: 120
Modified:
hugo/trunk/src/work/alpar/f_ed_ka.h
Log:
It is working...
Modified: hugo/trunk/src/work/alpar/f_ed_ka.h
==============================================================================
--- hugo/trunk/src/work/alpar/f_ed_ka.h (original)
+++ hugo/trunk/src/work/alpar/f_ed_ka.h Tue Feb 17 15:04:46 2004
@@ -19,6 +19,7 @@
typename Graph::EachNodeIt s,
typename Graph::EachNodeIt t)
{
+ typedef typename Graph::NodeIt NodeIt;
typedef typename Graph::EachNodeIt EachNodeIt;
typedef typename Graph::EdgeIt EdgeIt;
typedef typename Graph::EachEdgeIt EachEdgeIt;
@@ -29,10 +30,10 @@
T flow_val = 0;
T aug_val;
- for(EachEdgeIt e(G);G.valid(e);G.next(e))
+ for(EachEdgeIt e(G);G.valid(e);G.goNext(e))
f.set(e,0);
- std::queue<EachNodeIt> bfs_queue;
+ std::queue<NodeIt> bfs_queue;
typename Graph::NodeMap<int> visited(G); //0: unvisited,
//1: reached by a forward edge
//2: reached by a backward edge
@@ -43,7 +44,7 @@
augment:
- for(EachNodeIt n(G);G.valid(n);G.next(n))
+ for(EachNodeIt n(G);G.valid(n);G.goNext(n))
visited.set(n,0);
visited.set(s,3);
@@ -55,20 +56,25 @@
while(!bfs_queue.empty() && !visited.get(t))
{
- EachNodeIt n(bfs_queue.front());
- for(OutEdgeIt e(G,n);G.valid(e);G.next(e))
+ NodeIt n(bfs_queue.front());
+ bfs_queue.pop();
+ for(OutEdgeIt e(G,n);G.valid(e);G.goNext(e))
if(f.get(e)<c.get(e) && //FIXME: <
!visited.get(G.bNode(e)))
{
- tree.set(G.bNode(e),e);
- visited.set(G.bNode(e),1);
+ NodeIt nn(G.bNode(e)); //It improves nothing
+ tree.set(nn,e);
+ visited.set(nn,1);
+ bfs_queue.push(nn);
}
- for(InEdgeIt e(G,n);G.valid(e);G.next(e))
+ for(InEdgeIt e(G,n);G.valid(e);G.goNext(e))
if(f.get(e)>0 && //FIXME: >
!visited.get(G.bNode(e)))
{
- tree.set(G.bNode(e),e);
- visited.set(G.bNode(e),2);
+ NodeIt nn(G.bNode(e));
+ tree.set(nn,e);
+ visited.set(nn,2);
+ bfs_queue.push(nn);
}
}
@@ -81,12 +87,12 @@
gn = visited.get(t)==1 ? G.tail(tree.get(t)) : G.head(tree.get(t));
while(gn!=s) if(visited.get(gn)==1)
{
- //FIXME: nonstandars. gcc extension!
+ //FIXME: nonstandard gcc extension!
aug_val <?= c.get(tree.get(gn))-f.get(tree.get(gn));
gn=G.tail(tree.get(gn));
}
else {
- //FIXME: nonstandars. gcc extension!
+ //FIXME: nonstandard gcc extension!
aug_val <?= f.get(tree.get(gn));
gn=G.head(tree.get(gn));
}
More information about the Lemon-commits
mailing list