人生第一道24题,纪念一下qaq
Description
给定一张半完全有向二分图(每个左边节点都有边指向每个右边节点),左右两边节点数分别为$m,n$.
左边节点$i$有货物$a_i$, 右边节点$j$有需求$b_j$, 满足供需平衡$\sum a_i = \sum b_j$.
对于一条从$i$指向$j$的边,其费用为$cost_{i,j}$. 求让右边所有需求被满足的方案的最小费用.
$1 \leq n,m \leq 100$.
Samples
Sample Input #1
1 | 2 3 |
Sample Output #1
1 | 48500 |
Solution
首先膜拜$\texttt {Network Flow Master}$ xht, 神仙10min爆切NOI网络流题太强大了。
明显抽象成图之后这种有限制的最短路可以用网络流来解决。
因为有多个起点,那么考虑建立超级源点,超级汇点。
然后把超源和左边连上流量为$a_i$, 费用为$0$的边,超汇和右边连上流量为$b_i$, 费用为$0$的边。
最后$n^2$的把原二分图的每条边连好,流量为$inf$, 费用为$cost_{i,j}$.
结果跑个费用流就完事了,最大费用就建负费用图再跑一遍((((
Code
1 | /* Headers */ |