1本使う場合は、分断された木を繋ぐ必要があるので、上式に表されたとおりになります。2本以上使う場合は考える必要がありません。必要な1本を除けば他の移動は最短路木を辿れば最短であることがわかっているためです。オイラーツアーとRMQ少し書き直すと先程の式は次のようになります。出てきたので、オイラーツアーとRMQの組み合わせを思いつきます。計算し終わった後です。今後ずっと別の連結成分に属するような瞬間であることからわかります。よって、以上を合わせると次のようなアルゴリズムが思いつきます。以上で元の問題が解けました。まとめまとめると、問題を整理して、解を二分探索して、dijkstra書き換えて、もう一回問題を整理して、最短路木作って、LCA計算して、オイラーツアー作って、順番にRMQを更新すると、解けます。一つ一つはそこまで難しくない気がしますね。私は今回は自力で解けましたがICPC本番だと時間を使ってしまいそうだしそもそも解ける自信が無いですね......考察するとどんどん問題が小さくなっていくとても面白い問題でした。他にもJAG模擬地区予選は面白い問題がいっぱいあったのでぜひ解いてみてください。JAGの皆さん面白い問題をありがとうございました。来年はちゃんとオンサイト行きます。