問題はこちら
問題概要
頂点辺の連結無向グラフの各辺に英小文字がつ書かれている.頂点から頂点までのウォークのうち,通った辺に書かれた文字を順に並べると回文となるようなものの回文の長さの最小値を求めよ.解説
回文の性質(というか定義)と,始点・終点が固定という条件からいろいろ考えてみると,が回文になっているならとが等しいような頂点が存在するか,とが等しいような隣接する頂点が存在する,ということがわかる(逆も言える).
頂点と頂点から同じ文字が書かれた辺を,上の条件を満たすまで辿ればとりあえず回文になる.
同時に辿って行くのは難しいので,二つの頂点を(のように)一つの頂点にまとめるようなグラフを作ることで,同じ文字が書かれた辺の対ごとに新たなグラフに辺を張ればいい.
例:元のグラフで間の辺と間の辺に書かれた文字が同じ場合,新たなグラフでは間,間に辺を張る.
元のグラフでからに,からに行くことは新たなグラフでからに行くことに対応する.
同様に,元のグラフでからに,からに行くことは新たなグラフでからに行くことに対応する.
このようなグラフでのからや (は隣接する) までの最短距離を求める問題になる.同じ文字が書かれた辺の対に張られた辺(例の間など)のコストを,新たに頂点を作り,からにコストの辺を張り,からにコストの辺を張ることで,からへの最短コストが答えとなる.