和子集反演做法一样, 通过选择编号集合来做 dp\rm{dp}dp 进而优化到 O(n22n)\mathcal{O} (n^2 2^n)O(n22n) 具体的, 令 f(k)f(k)f(k) 表示「至多」选择了 kkk 个编号来在树上映射的方案数, g(k)g(k)g(k) 表示「恰好」选择 kkk 个编号在树上映射 应该有 f(k)=∑i=0k(xi)g(i) ⟺ g(k)=∑i=0k(−1)k−i(xi)f(i)\displaystyle f(k) = \sum_{i = 0}^{k} {x \choose i} g(i) \iff g(k) = \sum_{i = 0}^{k} (-1)^{k - i} {x \choose i} f(i)f(k)=i=0∑k(ix)g(i)⟺g(k)=i=0∑k(−1)k−i(ix)f(i) , f(k)f(k)f(k) 通过状态压缩树形 dp\rm{dp}dp 处理即可
但是挂了, 求思路错哪了