| 552 | } |
| 553 | |
| 554 | static void init_residual_network( |
| 555 | const struct linear_network * linear_network, |
| 556 | struct residual_network* residual_network) |
| 557 | { |
| 558 | const size_t max_num_arcs = linear_network->max_num_arcs; |
| 559 | const size_t max_num_nodes = linear_network->max_num_nodes; |
| 560 | |
| 561 | for(struct arc arc = {0};arc.idx < max_num_arcs; ++arc.idx) |
| 562 | { |
| 563 | if(arc_is_dual(arc)) |
| 564 | continue; |
| 565 | |
| 566 | struct arc dual = arc_dual(arc); |
| 567 | residual_network->cap[arc.idx]=linear_network->capacity[arc.idx]; |
| 568 | residual_network->cap[dual.idx]=0; |
| 569 | |
| 570 | residual_network->cost[arc.idx]=residual_network->cost[dual.idx]=0; |
| 571 | } |
| 572 | for(u32 i=0;i<max_num_nodes;++i) |
| 573 | { |
| 574 | residual_network->potential[i]=0; |
| 575 | } |
| 576 | } |
| 577 | |
| 578 | static void combine_cost_function( |
| 579 | const struct linear_network* linear_network, |
no test coverage detected