有向グラフに2つのパス(ウォーク?)を描いて、できるだけ多くの頂点を被覆する問題。流量2のフローを流す最小費用流問題に帰着する。
ネットワークの作り方を考える。まず、コスト(利得)を与えたいのは頂点なので、すべての頂点をとに分割する。始点から各に容量・コストの辺を張り、から終点にも容量・コストの辺を張る。また、元のグラフに頂点からへの辺が存在するならば、からへ容量・コストの辺を張る。
問題になるのは頂点へのコストの与え方で、1つのパスが頂点を通ったらの利得(=のコスト)になるが、もう1つのパスが同じ頂点を通っても利得はない、という条件を再現しなければならない。これは、からに2つの辺を張ることで実現する。1つの辺は容量・コストとし、もう1つは容量・コストとすればよい。
これでネットワークが完成したので、に流量のフローを流して最小コストを求めればよい……が、最小費用流のアルゴリズムによっては負閉路をどうするかが問題になる。一番簡単なのは、最初にグラフを強連結成分分解して閉路をすべて1点に潰してしまい、できあがったDAG上で最小費用流を考えることだろう。この時、作るネットワークは上とほとんど変わらないが、頂点をまとめてしまっているので、からへ張る辺のコストは変える必要がある: 一方の辺は容量・コストのままで良く、もう一方は容量でコストをとする。
drkenさんのリストにフローの問題として挙がっていたのだが、自分では辺の張り方がわからなかった。上の方針はyosupoさんの提出に基づいている。