显然如果 xx 能到达 yy 一定有 yxy \subseteq x,则我们只需要关心 xyx - y 的值 zz

然后对于一个 zz,方案数显然是 popc(z)!\operatorname{popc}(z)!,因为每次走一条边相当于把 zz 中的某一位 101 \to 0

现在只需要计算对于一个 zz,可以得到这个 zz(x,y)(x, y) 对的数量,显然是 2npopc(z)2^{n - \operatorname{popc}(z)},因为对于某一位,如果 x,yx, y 在这一位上相同,可以都填 0/10 / 1

于是我们考虑枚举 popc(z)\operatorname{popc}(z),则对应的 zz 就有 (npopc(z))\binom n{\operatorname{popc}(z)} 种。整合一下得到式子:

ans(n)=k=0n(nk)k!2nkans(n) = \sum_{k = 0}^n \binom nk k! 2^{n - k}

可以 O(n)O(n) 单次计算。把二项式展开可以得到:

ans(n)=k=0nn!(nk)!k!k!2nk=k=0nn!(nk)!2nk=n!k=0n2nk(nk)!=n!k=0n2kk!\begin{aligned} ans(n) &= \sum_{k = 0}^n \frac{n!}{(n - k)!k!} k!2^{n - k}\\ &= \sum_{k = 0}^n \frac{n!}{(n - k)!} 2^{n - k}\\ &= n! \sum_{k = 0}^n \frac{2^{n - k}}{(n - k)!} \\ &= n! \sum_{k = 0}^n \frac{2^k}{k!}\\ \end{aligned}

预处理前缀和即可,可以做到 O(n+T)O(n + T)

去掉 x=yx = y 以及 y=0y = 0 的贡献是简单的,这里不再赘述。