使用boost库中的successive_shortest_path_nonnegative_weights算法求解最小费用最大流
在网络流算法中,最小费用最大流问题是常见且重要的问题之一。而boost库提供的successive_shortest_path_nonnegative_weights算法正好可以用于解决该问题。
下面我们来看一个简单的测试程序,该程序求解的是以下示例图中的最小费用最大流问题。
2 (4)
s --------------> t
/|\ |
(1)|\ |
| \ (2) |(3)
| \ |
| v v
--> A ----------> B
(5) (6)
图中s表示源点,t表示汇点,A、B代表中间节点,带数字的括号代表边权重。我们的目标是求解从s到t的最小费用最大流。
首先需要定义图的数据结构。boost库中的adjacency_list可以方便地实现有向图的定义。针对本题,我们创建了一个包括6个节点、7条边的图。
#include <iostream>
#include <vector>
#include <boost/graph/adjacen