No.95
番目のノードを訪問すると 番目のノードをすべて訪問した場合よりも高い点数を獲得できるので, できるだけ大きい番号のノードを通るようにする.
番号の大きい順に 番目のノードを新たに訪問ノード集合に加えた場合でも 歩以内に辿れるかどうかを調べ, 辿れるならば訪問ノード集合に加えるというのを繰り返す.
訪問ノード集合が のときに 歩以内に辿れるかどうかは, BitDP を使う.
訪問ノード集合の部分集合 をすべて訪問し, そのうち 番目のノードを最後に訪れるときの最短歩数を とすると,
となる. ただし, は 番目のノードと 番目のノードの距離である. これはワーシャル・フロイド法であらかじめ求めておく.