この問題は、頂点辺の重み付き単純連結無向グラフが与えられたときに、その部分グラフであってかつオイラーグラフであるようなものの辺の重みの合計を最大化する問題です。
ただし、元のグラフには( )というすべての点を含むサイクルが存在し、また部分グラフとしてそのサイクルを含むような部分グラフについてのみ考えればよいとされてます。
ここで、あるグラフがオイラーグラフである( 一筆書きできる)条件は、
ことです。
ここで、全ての頂点を含むサイクルを含むグラフについてのみ考えればよかったので、 は自動的に満たされます。
よって、 についてのみ考えればよいです。
について考えると、あるグラフが条件を満たすグラフかを知るのに必要なのは各頂点の次数の偶奇のみであることがわかります。全ての点についての次数の組み合わせを状態として考えると、ありうる状態は 個です。
ここで、全ての頂点の次数の組を添え字にもつbitDPでこの問題を解くことを考えます。
必ず通らなくてはいけないサイクル以外の辺について、
番目の辺まで見て、 状態が であるときの重みの総和の最大値
と定義します。
このdpテーブルを更新していくことを考えます。
各辺について、その辺をグラフに追加するかしないかを考えると、追加する場合は辺の両端の頂点の次数の偶奇が変化し、しない場合は状態に変化はありません。
通りのすべての状態についてこの遷移を行うことで、dpテーブルを更新することができます。
初期状態は、
M本の辺全てについて遷移が終了した後の
が答えです。
一つの辺について遷移を行うのにかかる時間は で、 これを 本の辺すべてについて行うので、計算量 でこの問題を解くことができます。