1259 if (e!=INVALID) { |
1259 if (e!=INVALID) { |
1260 if (bfs.isBNodeNewlyReached()) { |
1260 if (bfs.isBNodeNewlyReached()) { |
1261 dist.set(res_graph.head(e), dist[res_graph.tail(e)]+1); |
1261 dist.set(res_graph.head(e), dist[res_graph.tail(e)]+1); |
1262 typename MG::Edge f=F.addEdge(res_graph_to_F[res_graph.tail(e)], |
1262 typename MG::Edge f=F.addEdge(res_graph_to_F[res_graph.tail(e)], |
1263 res_graph_to_F[res_graph.head(e)]); |
1263 res_graph_to_F[res_graph.head(e)]); |
1264 original_edge.update(); |
1264 //original_edge.update(); |
1265 original_edge.set(f, e); |
1265 original_edge.set(f, e); |
1266 residual_capacity.update(); |
1266 //residual_capacity.update(); |
1267 residual_capacity.set(f, res_graph.resCap(e)); |
1267 residual_capacity.set(f, res_graph.resCap(e)); |
1268 } else { |
1268 } else { |
1269 if (dist[res_graph.head(e)]==(dist[res_graph.tail(e)]+1)) { |
1269 if (dist[res_graph.head(e)]==(dist[res_graph.tail(e)]+1)) { |
1270 typename MG::Edge f=F.addEdge(res_graph_to_F[res_graph.tail(e)], |
1270 typename MG::Edge f=F.addEdge(res_graph_to_F[res_graph.tail(e)], |
1271 res_graph_to_F[res_graph.head(e)]); |
1271 res_graph_to_F[res_graph.head(e)]); |
1272 original_edge.update(); |
1272 //original_edge.update(); |
1273 original_edge.set(f, e); |
1273 original_edge.set(f, e); |
1274 residual_capacity.update(); |
1274 //residual_capacity.update(); |
1275 residual_capacity.set(f, res_graph.resCap(e)); |
1275 residual_capacity.set(f, res_graph.resCap(e)); |
1276 } |
1276 } |
1277 } |
1277 } |
1278 } |
1278 } |
1279 ++bfs; |
1279 ++bfs; |
1292 typename MG::template NodeMap<Num> free(F); |
1292 typename MG::template NodeMap<Num> free(F); |
1293 |
1293 |
1294 dfs.pushAndSetReached(sF); |
1294 dfs.pushAndSetReached(sF); |
1295 while (!dfs.finished()) { |
1295 while (!dfs.finished()) { |
1296 ++dfs; |
1296 ++dfs; |
1297 if (F.valid(/*typename MG::OutEdgeIt*/(dfs))) { |
1297 if (typename MG::Edge(dfs)!=INVALID) { |
1298 if (dfs.isBNodeNewlyReached()) { |
1298 if (dfs.isBNodeNewlyReached()) { |
1299 typename MG::Node v=F.tail(dfs); |
1299 typename MG::Node v=F.tail(dfs); |
1300 typename MG::Node w=F.head(dfs); |
1300 typename MG::Node w=F.head(dfs); |
1301 pred.set(w, dfs); |
1301 pred.set(w, dfs); |
1302 if (pred[v]!=INVALID) { |
1302 if (pred[v]!=INVALID) { |