description
刚刚解决完电力网络的问题, 阿狸又被领导的任务给难住了.
刚才说过, 阿狸的国家有n 个城市, 现在国家需要在某些城市对之间建立一些贸易路线, 使得整个国家的任意两个城市都直接或间接的连通.
为了省钱, 每两个城市之间最多只能有一条直接的贸易路径. 对于两个建立路线的方案, 如果存在一个城市对, 在两个方案中是否建立路线不一样, 那么这两个方案就是不同的, 否则就是相同的. 现在你需要求出一共有多少不同的方案.
好了, 这就是困扰阿狸的问题. 换句话说, 你需要求出n 个点的简单(无重边无自环)无向连通图数目.
由于这个数字可能非常大, 你只需要输出方案数mod 1004535809(479 * 2 ^21 + 1)即可.
analysis
-
看到模数就应该知道是分治 + N T T +NTT +NTT
-
设 f [ i ] 表 示 f[i]表示 f[i]表示为 i i i的答案,那么肯定是全部的方案数减去不合法的方案数
-
设 g [ i ] = 2 ( 2 i ) g[i]=2^{\left( \begin{matrix} 2\\ i\\ \end{matrix} \right)} g[i]=2(2i),也就是一共有 ( 2 i ) \left( \begin{matrix} 2\\ i\\ \end{matrix} \right) (2i)条边,就是 2 ( 2 i ) 2^{\left( \begin{matrix} 2\\ i\\ \end{matrix} \right)} 2(2i)种总方案数
-
推推可以知道 f [ n ] = g [ n ] − ∑ i = 1 n − 1 ( i − 1 n − 1 ) g [ i ] ∗ f [ n − i ] f[n]=g[n]-\sum_{i=1}^{n-1}\left( \begin{matrix} i-1\\ n-1\\ \end{matrix} \right)g[i]*f[n-i] f[n]=g[n]−∑i=1n−1(i−1n−1)g[i]∗f[n−i],拆组合数之后就是
-
f [ n ] = g [ n ] − ∑ i = 1 n − 1 ( n − 1 ) ! ( i − 1 ) ! ( n − i ) ! ∗ g [ i ] ∗ f [ n − i ] f[n]=g[n]-\sum_{i=1}^{n-1}{ {(n-1)!}\over{(i-1)!(n-i)!}}*g[i]*f[n-i] f[n]=g[n]−∑i=1n−1(i−1)!(n−i)!(n−1)!∗g[i]∗