合計雨量の差にしか興味がないので、費用diを使って呪文iを唱えると地域biの雨量が1減り地域aiの雨量が1増える、つまり雨量が1移動するとだけ考えればよい。雨量の移動を自由に繰り返して最小コストで雨量を平準化するのは、最小費用流問題そのものである。
最初の雨量はどの地域も0とし、呪文c1,...,cMを唱えて雨量がp1,...,pKになったとする。グラフは次のように作ればよい:
- pv>0なら、始点Sからvに容量pv、コスト0の辺を張る。
- pv<0なら、vから終点Tに容量−pv、コスト0の辺を張る。
- 各biからaiに容量∞、コストdiの辺を張る。
Sの出容量のぶんだけTに流したときの最小コストが答えであり、必要な量を流せない場合は−1である。計算量(の一例)はO(KElogV)。