某岛

… : "…アッカリ~ン . .. . " .. .
May 19, 2023

Luogu P6295. 有标号 DAG 计数

对于有标号图,假设我们得到了不连通情况下的 EGF,那么求对应的连通图有常见套路(可参见 城市规划那个题荒漠那个题)。

因而问题转换为不连通的情况,也就是 上一题

我们需要先想办法构造卷积。

(1)   \begin{align*} f_i &= \sum_{j=1}^{i} (-1)^{j-1} \binom{i}{j} \sum_{k=1}^{i-j} f_{i-j} 2^{j(i-j)} \end{align*}

这里需要用一些 trick,最后得到。

(2)   \begin{align*} F(x) &= \sum_{i} x^i \frac{f_i}{i!2^\binom{i}{2}} \\ G(x) &= \sum_{i} x^i \frac{(-1)^{i+1}}{i!2^\binom{i}{2}}  \end{align*}

#include <lastweapon/poly>
#include <lastweapon/number>
using namespace lastweapon;

LL C2(LL n) {
    return n*(n-1)/2;
}

int main() {
#ifndef ONLINE_JUDGE
    //freopen("in.txt", "r", stdin);
#endif
    int n; RD(n)++;

    Poly F(n); Mint i2 = invFac[2];

    FOR(i, 1, n) {
        F[i] = invFac[i] * pow(i2, C2(i));
        if (i&1) F[i] = -F[i];
    }

    F[0] += 1; F = F.inv(n);
    REP_1(i, n) F[i] *= pow(Mint(2), C2(i));
    F = F.log(n);

    --n;
    REP_1(i, n) {
        cout << F[i] * fac[i] << endl;
    }
}