■ [TCO][MM]TCO10 Marathon Round3
非常に今更ながら、今年のTCOも近いことだし振り返り。
問題
http://www.topcoder.com/longcontest/?module=ViewProblemStatement&rd=14274&pm=11016
ノードの数が1000~20000のでかいグラフが与えられる。
その中から連結しているi個のノードを取り出して、そいつら同士の枝だけを残したグラフをサブグラフHiと呼ぶ。
H5、H6、H7、…が順番に与えられるので、大きいグラフの中のどのノード由来のものかを答える。制限時間内にいくつ答えられたかがスコアとなる。
解答が複数通り考えられる場合はどれを答えてもよい。
基本的な戦略
DFS全探索+枝刈り。
早めに解答が見つかるよう・早めに枝が刈れるよう、調べる順番を工夫する。
探索順序の工夫
- でかいグラフの方は、たくさん枝を持っているものから順に調べる
- サブグラフのノードを一つずつ決定していくにつれて、サブグラフの各ノードがでかいグラフのどのノードに対応する可能性があるかを更新する。どれともマッチする可能性がなくなったノードが現れたら枝を刈る
- サブグラフのノードの調べる順序。
よく覚えてないのでほかにもあったに違いない
結果
順位:22位/79人
レート:2074->2105