$Poj1737\ Connected\ Graph$ 计数类$DP$

AcWing

Description

求$N$个节点的无向连通图有多少个,节点有标号,编号为$1~N$.

$1<=N<=50$

Sol

在计数类$DP$中,通常要把一个问题划分成若干个子问题,以便于执行递推.

一个连通图不容易划分,而一个不连通的无向图则很容易划分成结点更少的两部分.所以我们把问题转化成用$N$个点的无向图总个数减去$N$个点的不连通无向图的个数.

$N$个点的无向图总个数显然是$2^{N*(N-1)/2}$,还是简单说下叭,就是$N$个点连成完全图的边数显然是$N*(N-1)/2$,然后每条边都可取可不取,所以就是$2^{N*(N-1)/2}$.

现在我们要把问题划分成互斥的子问题 $OvO$.不连通的图由若干个连通图构成.我们可以枚举$1$结点所在的联通块包含的结点数$k$,从$2~N$这$N-1$个结点中选出$k-1$个结点,显然有$C_{N-1}^{k-1}$种.剩余$N-k$个结点构成任意无向图,显然有$2^{(N-k)*(N-k-1)/2}$种.

$F[i]$表示$i$个结点构成的无向连通图个数.

$F[i]=2^{i*(i-1)/2}-\sum_{j=1}^{i-1}F[j]*C_{i-1}^{j-1}*2^{(i-j)*(i-j-1)/2}$

$F[1]=1$,答案为$F[N]$

Code

本来我已经信心满满地开始写了,突然发现还要高精 : )).我咕咕咕了.也许明天会写???

原文地址:https://www.cnblogs.com/forward777/p/11254190.html

时间: 2024-11-01 21:29:34