src/lemon/preflow.h
changeset 986 e997802b855c
parent 977 48962802d168
child 1164 80bb73097736
     1.1 --- a/src/lemon/preflow.h	Sat Nov 13 12:24:01 2004 +0000
     1.2 +++ b/src/lemon/preflow.h	Sat Nov 13 12:53:28 2004 +0000
     1.3 @@ -305,7 +305,7 @@
     1.4  
     1.5  	for(InEdgeIt e(*g,v); e!=INVALID; ++e) {
     1.6  	  if ( (*capacity)[e] <= (*flow)[e] ) continue;
     1.7 -	  Node u=g->tail(e);
     1.8 +	  Node u=g->source(e);
     1.9  	  if ( level[u] >= n ) {
    1.10  	    bfs_queue.push(u);
    1.11  	    level.set(u, l);
    1.12 @@ -318,7 +318,7 @@
    1.13  
    1.14  	for(OutEdgeIt e(*g,v); e!=INVALID; ++e) {
    1.15  	  if ( 0 >= (*flow)[e] ) continue;
    1.16 -	  Node u=g->head(e);
    1.17 +	  Node u=g->target(e);
    1.18  	  if ( level[u] >= n ) {
    1.19  	    bfs_queue.push(u);
    1.20  	    level.set(u, l);
    1.21 @@ -410,7 +410,7 @@
    1.22  	queue.pop();
    1.23  	
    1.24  	for(OutEdgeIt e(*g,w) ; e!=INVALID; ++e) {
    1.25 -	  Node v=g->head(e);
    1.26 +	  Node v=g->target(e);
    1.27  	  if (!M[v] && (*flow)[e] < (*capacity)[e] ) {
    1.28  	    queue.push(v);
    1.29  	    M.set(v, true);
    1.30 @@ -418,7 +418,7 @@
    1.31  	}
    1.32  	
    1.33  	for(InEdgeIt e(*g,w) ; e!=INVALID; ++e) {
    1.34 -	  Node v=g->tail(e);
    1.35 +	  Node v=g->source(e);
    1.36  	  if (!M[v] && (*flow)[e] > 0 ) {
    1.37  	    queue.push(v);
    1.38  	    M.set(v, true);
    1.39 @@ -448,7 +448,7 @@
    1.40  	queue.pop();
    1.41  
    1.42  	for(InEdgeIt e(*g,w) ; e!=INVALID; ++e) {
    1.43 -	  Node v=g->tail(e);
    1.44 +	  Node v=g->source(e);
    1.45  	  if (M[v] && (*flow)[e] < (*capacity)[e] ) {
    1.46  	    queue.push(v);
    1.47  	    M.set(v, false);
    1.48 @@ -456,7 +456,7 @@
    1.49  	}
    1.50  
    1.51  	for(OutEdgeIt e(*g,w) ; e!=INVALID; ++e) {
    1.52 -	  Node v=g->head(e);
    1.53 +	  Node v=g->target(e);
    1.54  	  if (M[v] && (*flow)[e] > 0 ) {
    1.55  	    queue.push(v);
    1.56  	    M.set(v, false);
    1.57 @@ -515,7 +515,7 @@
    1.58  
    1.59        for(OutEdgeIt e(*g,w) ; e!=INVALID; ++e) {
    1.60  	if ( (*flow)[e] >= (*capacity)[e] ) continue;
    1.61 -	Node v=g->head(e);
    1.62 +	Node v=g->target(e);
    1.63  
    1.64  	if( lev > level[v] ) { //Push is allowed now
    1.65  	  
    1.66 @@ -547,7 +547,7 @@
    1.67  	for(InEdgeIt e(*g,w) ; e!=INVALID; ++e) {
    1.68  	  
    1.69  	  if( (*flow)[e] <= 0 ) continue;
    1.70 -	  Node v=g->tail(e);
    1.71 +	  Node v=g->source(e);
    1.72  
    1.73  	  if( lev > level[v] ) { //Push is allowed now
    1.74  
    1.75 @@ -602,7 +602,7 @@
    1.76  	  
    1.77  	  for(InEdgeIt e(*g,v) ; e!=INVALID; ++e) {
    1.78  	    if ( (*capacity)[e] <= (*flow)[e] ) continue;
    1.79 -	    Node w=g->tail(e);
    1.80 +	    Node w=g->source(e);
    1.81  	    if ( level[w] == n && w != s ) {
    1.82  	      bfs_queue.push(w);
    1.83  	      Node z=level_list[l];
    1.84 @@ -615,7 +615,7 @@
    1.85  	  
    1.86  	  for(OutEdgeIt e(*g,v) ; e!=INVALID; ++e) {
    1.87  	    if ( 0 >= (*flow)[e] ) continue;
    1.88 -	    Node w=g->head(e);
    1.89 +	    Node w=g->target(e);
    1.90  	    if ( level[w] == n && w != s ) {
    1.91  	      bfs_queue.push(w);
    1.92  	      Node z=level_list[l];
    1.93 @@ -646,7 +646,7 @@
    1.94  	  int l=level[v]+1;
    1.95  	  
    1.96  	  for(InEdgeIt e(*g,v) ; e!=INVALID; ++e) {
    1.97 -	    Node w=g->tail(e);
    1.98 +	    Node w=g->source(e);
    1.99  	    if ( level[w] == n && w != s ) {
   1.100  	      bfs_queue.push(w);
   1.101  	      Node z=level_list[l];
   1.102 @@ -662,7 +662,7 @@
   1.103  	for(OutEdgeIt e(*g,s) ; e!=INVALID; ++e) {
   1.104  	  Num c=(*capacity)[e];
   1.105  	  if ( c <= 0 ) continue;
   1.106 -	  Node w=g->head(e);
   1.107 +	  Node w=g->target(e);
   1.108  	  if ( level[w] < n ) {
   1.109  	    if ( excess[w] <= 0 && w!=t ) { //putting into the stack
   1.110  	      next.set(w,first[level[w]]);
   1.111 @@ -687,7 +687,7 @@
   1.112  	for(OutEdgeIt e(*g,s); e!=INVALID; ++e)	{
   1.113  	  Num rem=(*capacity)[e]-(*flow)[e];
   1.114  	  if ( rem <= 0 ) continue;
   1.115 -	  Node w=g->head(e);
   1.116 +	  Node w=g->target(e);
   1.117  	  if ( level[w] < n ) {
   1.118  	    if ( excess[w] <= 0 && w!=t ) { //putting into the stack
   1.119  	      next.set(w,first[level[w]]);
   1.120 @@ -700,7 +700,7 @@
   1.121  	
   1.122  	for(InEdgeIt e(*g,s); e!=INVALID; ++e) {
   1.123  	  if ( (*flow)[e] <= 0 ) continue;
   1.124 -	  Node w=g->tail(e);
   1.125 +	  Node w=g->source(e);
   1.126  	  if ( level[w] < n ) {
   1.127  	    if ( excess[w] <= 0 && w!=t ) {
   1.128  	      next.set(w,first[level[w]]);
   1.129 @@ -717,13 +717,13 @@
   1.130  	for(OutEdgeIt e(*g,s) ; e!=INVALID; ++e) {
   1.131  	  Num rem=(*capacity)[e]-(*flow)[e];
   1.132  	  if ( rem <= 0 ) continue;
   1.133 -	  Node w=g->head(e);
   1.134 +	  Node w=g->target(e);
   1.135  	  if ( level[w] < n ) flow->set(e, (*capacity)[e]);
   1.136  	}
   1.137  	
   1.138  	for(InEdgeIt e(*g,s) ; e!=INVALID; ++e) {
   1.139  	  if ( (*flow)[e] <= 0 ) continue;
   1.140 -	  Node w=g->tail(e);
   1.141 +	  Node w=g->source(e);
   1.142  	  if ( level[w] < n ) flow->set(e, 0);
   1.143  	}
   1.144