AOJ 2597 Color the Map Extreme
-
まえがき
解説PDFが閲覧できなくなっていたのと、ネットに自分の解法が落ちてなさそうだったので書きました。
-
問題概要
https://judge.u-aizu.ac.jp/onlinejudge/description.jsp?id=2597
-
解法
とりあえずグラフを作る。4色定理があるので答えは4以下。
答えが1かどうか→グラフに辺があるかどうか
答えが2かどうか→グラフが二部グラフかどうか
なので、答えが3かどうかを調べる。
まず、色1,2,3があったときに、色3となる頂点が全て決まっている場合、これは残りの頂点を2色で塗る問題に帰着される。
そこで問題となるのが色3となる頂点の決め方に2^N通りあること。少し考えると、色3となる頂点の集合は極大独立集合であると仮定してよい。
ところでグラフの極大独立集合は O(1.618^N) で列挙できる。
具体的には、頂点を1から順に見ていったときに、次数0の頂点は独立集合に加えるしかないし、次数1以上の頂点はそれを独立集合に加えると頂点N-2以下のグラフとなるので、計算量がフィボナッチ数で抑えられる。
したがってO(N^2*1.618^N)でこの問題は解くことができる。
このままだと少し遅いので、お好みの枝刈りをどうぞ
(私の場合は、答えが3かどうかの判定の直前に次数2以下の頂点を順次削除しました。)
-
実装
https://judge.u-aizu.ac.jp/onlinejudge/review.jsp?rid=6161908#1