No.196

頂点 を根とする木で 個の頂点を黒く塗る組み合わせの数を とする.

頂点 が持つ子の個数を , 子をそれぞれ とし, 頂点 の最初の 個の子のみがあるとして, 個の頂点を黒く塗る組み合わせの数を とする.

このとき,

で計算できる. あとは を葉から順に計算する. 葉から順にたどるには, 深さ優先探索や幅優先探索で頂点を列挙し, 列挙された頂点を逆からたどればいい.

ただ, そのまま計算すると計算量が となるので, の子孫の数をあらかじめ数えておき, がそれ以上なら計算しないようにして枝刈りをする.