POJ 1737 Connected Graph 递推

题目大意:求n个点能组成多少种无向连通图

多年的老心病终于干掉了- –

令f[i]表示i个点能组成多少种无向图

首先易知我们能生成2^(i*(i-1)/2)种图 但是一些是不合法的 我们要将不合法的干掉

枚举1号节点与多少个点连通

设1号节点所在联通块大小为j(1<=j<=i-1)

那么与1相连的其它点有C(i-1,j-1)中选法,,1号节点所在联通块有f[j]种连法,不与1号节点相连的点有2^((i-j)*(i-j-1)/2)种连法

故得到递推式f[i]=2^(i*(i-1)/2)-Σ[1<=j<=i-1]C(i-1,j-1)*f[j]*2^((i-j)*(i-j-1)/2)

w = open("out.out", "w")f = [0] * 60C = [[0] * 60 for i in range(60)]for i in range(0,51):C[i][0] = 1for j in range(1,i+1):C[i][j] = C[i-1][j] + C[i-1][j-1]for i in range(1,51):f[i] = 2**(i*(i-1)//2)for j in range(1,i):f[i] -= C[i-1][j-1] * (2**((i-j)*(i-j-1)/2)) * f[j]w.write("\&;%d\&;,\n" %f[i] )

世界会向那些有目标和远见的人让路(冯两努——香港着名推销商

POJ 1737 Connected Graph 递推

相关文章:

你感兴趣的文章:

标签云: