AtCoder Beginner Contest 221 F問題 Diameter set
問題
提出解答
問題の概要
頂点の木 が与えられる. の直径を とする. このとき, 以下の条件を満たす部分集合 の個数を求めよ.
- . ただし, は における頂点 間の距離
制約
解法
において, となる2つの頂点 を取ってくる. なお, この は BFS を2回行うことで取ってくることができる. そして, パスを とする.
が偶数のとき
として, とする. このとき, 任意の に対して, である. よって, を頂点 を根とする根付き木と見なす. すると, 頂点 における深さを , 頂点 の最小共通先祖を と書くことにすると,
となる. 更に, の部分を言い換える. 根 の子を とする. このとき, の部分グラフで, を根とした部分木を とする. そして, を に属する頂点の集合とし, 根でない頂点 に対して, で, となる を表すとする. このとき,
よって, 以下のような問題に帰着できる.
以下を満たすような はいくつか?
一旦, という条件を考えないことにする. このとき, 各部分木から の要素に選ぶことができるのは高々 頂点である. よって, のうち, 深さが であるような頂点の個数を とすると, 各 での選択はどれも要素にならないか, 個の頂点からどれか つ選ぶの合わせて 通りである. また, ある部分木での選択は他の部分木での選択には影響を与えないことから, 中段, 下段を満たす の選び方は
通りである. このうち, となってしまうのは, の場合と, の場合である.
- となるのは, の場合に限り, これは 通りである.
- となるのは, ある となる で, となる場合である. となる頂点の数は である.
よって, 求めるべき解答は,
である.
が奇数のとき
として, とする. このとき, 木 から辺 を取り除いたグラフ はちょうど 2 つの連結成分からなる森である. の 2 つの連結成分を としたとき, 任意の に属する 2 つの頂点 において, である. 側も同様である.
よって, という条件も合わせることで, 条件を満たすような は 側の からの距離が である頂点 と, 側の からの距離が である頂点 で, と表さなれなければならない. 逆に, このように が表せるならば, 必ず は条件を満たす.
従って, 部分木 において, からの距離が であるような頂点の数を , 部分木 において, からの距離が であるような頂点の数を とすると, 求めるべき解答は である.
計算量はどちらの場合でも, である.