複雑な設定だが、考えるべきは各投票者がどの候補者をトップ(一番目)にした可能性があるか、だけである。
与えられた投票者について、の投票した候補者の部分列がであるとわかっているとする。ネクロマンサーの投票操作を最小で済ませるためには、候補者にとって最善のケースを考えるべきである。ならは候補者をトップにしたと考えれば良いし、に候補者が含まれていない場合もやはり候補者をトップにしたと考えてよい。その他の場合、つまり部分列の中にが含まれているが最初ではない場合、は以外の候補をトップにしたことになる。ならそれはだし、なら以外のいずれかの候補である。
さて、以外に投票したことがわかっている候補者については、投票先をにばらけさせて、得票数の最大値ができるだけ小さくなるようにしたい。その最小値がわかれば、ネクロマンサーはそれを超えるように候補者の得票を増やせばよい。これは二分探索とフローで実現できる。つまり、得票数の最大値がある値以下にできるかどうかを最大フローで判定すればよい。
グラフの作り方としては、始点を(投票先が1以外の)各投票者と容量の辺でつなぎ、投票者をありえる投票先に容量の辺でつなぎ、(1以外の)各候補者と終点を容量の辺でつなげばよい。
サンプルのケースでは次のようなグラフになる:
3人の投票者について、4人の候補者の中からありえる投票先につないでいる。何も書かれていない辺の容量はである。候補者は常に無視してよいし、投票者も候補者に投票しているとみなせるので無視してよいが、便宜上、図に書いている。
このグラフに流量(から出ている辺の容量の合計)のフローが流せれば、得票数の最大値が以下にできることがわかるので、二分探索で境界を探せば良い。