題意:
求\(n\)個點的簡單(無重邊無自環)有標號無向連通圖數目。
思路:設\(f(n)\)為點數為\(n\)的無向連通圖的數量,\(g(n)\)為點數為\(n\)的無向圖的數量,可以知道:
\[g(n)=2^
\]可以這麼理解,\(n\)個點中取兩個點連邊,一共有\(c_n^2\)種,每個邊存在連或不連兩種可能。
同時有:
\[g(n)=\sum_^nc_^f(i)\times g(n-i)
\]這個可以這麼理解,對於一號點,列舉它所在的連通塊中有多少個點。
代入\(g(n)\)可得:
\[2^=\sum_^nc_^f(i)2^^2}
\]化簡一下:
\[2^=\sum_^n\frac^2}}\\\frac}=\sum_^n\frac\times \frac^2}}\]設
\[f(x)=\sum_^\fracx^n\\g(x)=\sum_^\frac}x^n\\h(x)=\sum_^\frac}x^n
\]那麼有:
\[f\equiv h*g^(mod\ x^)
\]ntt+多項式求逆求解。
#includeusing namespace std;
typedef long long ll;
const int maxn = 6e5+10;
const ll mod = 1004535809;
const int g = 3;
int n;
ll inv[maxn]; //逆元
ll fiv[maxn]; //逆元的階乘
ll g1[maxn], g2[maxn], g3[maxn];
ll qmi(ll a, ll b)
return res%mod;
}int limit, len, rev[maxn];
void ntt(ll *c, int op)}}
if(op == 1) return;
ll inv = qmi(limit, mod-2);
for(int i = 0; i <= limit; i++) c[i] = c[i]*inv%mod;
}ll tmp[maxn];
void get_inv(ll *a, ll *b, int deg)
get_inv(a, b, (deg+1)>>1);
len = 0, limit = 1;
while(limit <= (deg+deg)) limit <<= 1, len++;
for(int i = 1; i <= limit; i++)
rev[i] = (rev[i>>1]>>1)|((i&1)<<(len-1));
for(int i = 0; i < deg; i++) tmp[i] = a[i];
for(int i = deg; i <= limit; i++) tmp[i] = 0;
ntt(tmp, 1), ntt(b, 1);
for(int i = 0; i <= limit; i++)
b[i] = 1ll*(2-1ll*tmp[i]*b[i]%mod+mod)%mod*b[i]%mod;
ntt(b, -1);
for(int i = deg; i <= limit; i++) b[i] = 0;
}int main()
g3[0] = 1;
for(ll i = 1; i < n; i++)
get_inv(g3, g2, n);
ntt(g1, 1); ntt(g2, 1);
for(int i = 0; i <= limit; i++) g1[i] = g1[i]*g2[i]%mod;
ntt(g1, -1);
ll ans = g1[n-1]%mod*qmi(fiv[n-2], mod-2)%mod;
cout << ans << endl;
return 0;
}
洛谷P4841 城市規劃
題目大意 求 n 個點的帶標號的無向連通圖的個數 題解 令 f x 為帶標號無向連通圖個數生成函式,g x 為帶標號無向圖個數生成函式 那麼 g x sum dfrac x i 列舉連通塊個數可得 g x sum dfrac f x f x 0 dfrac dfrac cdots dfrac x 0...
洛谷 P4841 城市規劃 解題報告
n個有標號點的簡單 無重邊無自環 無向連通圖數目.僅一行乙個整數 n le 130000 僅一行乙個整數,為方案數 bmod 1004535809 設 g i 表示 i 個點的圖的數目,f i 表示 i 個點聯通圖的個數 g n f n sum f i binomg 意義是聯通圖 非聯通圖,關於非聯...
P4841 集訓隊作業2013 城市規劃
設 f i 表示 i 個點的無向連通圖個數,g i 表示 i 個點的無向圖個數。列舉 1 所在連通塊的大小,有 g i sum limits ic f jg 化簡得 g i sum limits i fracf jg frac sum limits i frac frac 設 f i frac,g ...