src/work/jacint/dijkstra.h
changeset 167 7949a29a334e
parent 160 f1a7005e9dff
child 170 9091b1ebca27
     1.1 --- a/src/work/jacint/dijkstra.h	Thu Mar 11 11:03:22 2004 +0000
     1.2 +++ b/src/work/jacint/dijkstra.h	Thu Mar 11 12:55:50 2004 +0000
     1.3 @@ -2,29 +2,24 @@
     1.4  /* 
     1.5   *template <Graph, T, Heap=FibHeap>
     1.6   *
     1.7 - *
     1.8   *Constructor: 
     1.9   *
    1.10   *Dijkstra(Graph G, NodeIt s, Graph::EdgeMap<T> length)
    1.11   *
    1.12   *
    1.13 - *
    1.14   *Member functions:
    1.15   *
    1.16   *void run()
    1.17   *
    1.18   *  The following function should be used after run() was already run.
    1.19   *
    1.20 - *
    1.21   *T dist(NodeIt v) : returns the distance from s to v. 
    1.22   *   It is 0 if v is not reachable from s.
    1.23   *
    1.24 - *
    1.25   *EdgeIt pred(NodeIt v) : returns the last edge 
    1.26   *   of a shortest s-v path. Returns an invalid iterator 
    1.27   *   if v=s or v is not reachable from s.
    1.28   *
    1.29 - *
    1.30   *bool reach(NodeIt v) : true iff v is reachable from s
    1.31   *
    1.32   */
    1.33 @@ -76,9 +71,9 @@
    1.34  
    1.35  	  NodeIt v=heap.top(); 
    1.36  	  T oldvalue=heap.get(v);
    1.37 +	  heap.pop();
    1.38  	  distance.set(v, oldvalue);
    1.39 -	  heap.pop();
    1.40 -	  
    1.41 +
    1.42  	  OutEdgeIt e;
    1.43  	  for( G.getFirst(e,v); G.valid(e); G.next(e)) {
    1.44  	    NodeIt w=G.bNode(e); 
    1.45 @@ -88,7 +83,6 @@
    1.46  		reached.set(w,true);
    1.47  		heap.push(w,oldvalue+length.get(e)); 
    1.48  		predecessor.set(w,e);
    1.49 -
    1.50  	      } else if ( oldvalue+length.get(e) < heap.get(w) ) {
    1.51  		predecessor.set(w,e);
    1.52  		heap.decrease(w, oldvalue+length.get(e)); 
    1.53 @@ -114,9 +108,9 @@
    1.54        bool reach(NodeIt v) {
    1.55  	return reached.get(v);
    1.56        }
    1.57 -
    1.58 +      
    1.59      };
    1.60 -
    1.61 +  
    1.62  }
    1.63  
    1.64  #endif