题意:输出题中带有$n$个标号的图中连通图的个数。

解题关键:

令$f(n)$为连通图的个数,$g(n)$为非联通图的个数,$h(n)$为总的个数。

则$f(n) + g(n) = h(n)$

考虑标号1所在的联通分量中连通图的个数。

转移方程:$g(n) = \sum\limits_{k = 1}^{n - 1} {C_{n - 1}^{k - 1}f(k)h(n - k)} $

$h(n) = \frac{{n(n - 1)}}{2}$

import java.math.*;
import java.util.*;
public class Main {
public static void main(String[] args) {
BigInteger h[]=new BigInteger [55],C[][]=new BigInteger[55][55];
C[0][0]=BigInteger.ONE;
for(int i=0;i<=50;i++){//预处理组合数
C[i][0]=C[i][i]=BigInteger.ONE;
for(int j=1;j<i;j++){
C[i][j]=C[i-1][j].add(C[i-1][j-1]);
}
}
for(int i=1;i<=50;i++) h[i]=BigInteger.valueOf(2).pow(i*(i-1)/2);
BigInteger f[]=new BigInteger[55],g[]=new BigInteger[55];
f[1]=BigInteger.ONE;
for(int i=1;i<=50;i++) {
g[i]=BigInteger.ZERO;
for(int j=1;j<i;j++) {
g[i]=g[i].add(C[i-1][j-1].multiply(f[j]).multiply(h[i-j]));
}
f[i]=h[i].subtract(g[i]);
}
Scanner in=new Scanner(System.in);
while(in.hasNext()){
int n=in.nextInt();
if(n==0) break;
System.out.println(f[n]);
}
} }

[poj1737]Connected Graph(连通图计数)的更多相关文章

  1. POJ1737 Connected Graph

    Connected Graph Time Limit: 1000MS   Memory Limit: 30000K Total Submissions: 3156   Accepted: 1533 D ...

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

    AcWing Description 求$N$个节点的无向连通图有多少个,节点有标号,编号为$1~N$. $1<=N<=50$ Sol 在计数类$DP$中,通常要把一个问题划分成若干个子问 ...

  3. 【Java】【高精度】【组合数】【递推】poj1737 Connected Graph

    http://blog.csdn.net/sdj222555/article/details/12453629 这个递推可以说是非常巧妙了. import java.util.*; import ja ...

  4. poj 1737 Connected Graph

    // poj 1737 Connected Graph // // 题目大意: // // 带标号的连通分量计数 // // 解题思路: // // 设f(n)为连通图的数量,g(n)为非连通图的数量 ...

  5. POJ 1737 Connected Graph 题解(未完成)

    Connected Graph Time Limit: 1000MS   Memory Limit: 30000K Total Submissions: 3156   Accepted: 1533 D ...

  6. Connected Graph

    Connected Graph 求n个点的无向联通图数量,\(n\leq 50\). 解 直接无向联通图做状态等于是以边点做考虑,难以去重,考虑联通对立面即不联通. 不难求出n个点的总方案数为\(2^ ...

  7. 【poj1737】 Connected Graph

    http://poj.org/problem?id=1737 (题目链接) 题意 求n个节点的无向连通图的方案数,不取模w(゚Д゚)w Solution 刚开始想了个第二类斯特林数,然而并不知道怎么求 ...

  8. 【XSY1295】calc n个点n条边无向连通图计数 prufer序列

    题目大意 求\(n\)个点\(n\)条边的无向连通图的个数 \(n\leq 5000\) 题解 显然是一个环上有很多外向树. 首先有一个东西:\(n\)个点选\(k\)个点作为树的根的生成森林个数为: ...

  9. 【BZOJ3456】轩辕朗的城市规划 无向连通图计数 CDQ分治 FFT 多项式求逆 多项式ln

    题解 分治FFT 设\(f_i\)为\(i\)个点组成的无向图个数,\(g_i\)为\(i\)个点组成的无向连通图个数 经过简单的推导(枚举\(1\)所在的连通块大小),有: \[ f_i=2^{\f ...

随机推荐

  1. Linux基础系列:常用命令(5)_samba服务与nginx服务

    作业一:部署samba 每个用户有自己的目录,可以浏览内容,也可以删除 所有的用户共享一个目录,只能浏览内容,不能删 安装samba服务 1.准备环境 setenforce 0 2.安装软件包 yum ...

  2. oracle字符串函数总结

    字符函数——返回字符值 这些函数全都接收的是字符族类型的参数(CHR 除外)并且返回字符值.除了特别说明的之外,这些函数大部分 返回VARCHAR2类型的数值.字符函数的返回类型所受的限制和基本数据库 ...

  3. Python 3 udp 套接字

    Python 3 udp套接字 TCP是建立可靠连接,并且通信双方都可以以流的形式发送数据.相对TCP,UDP则是面向无连接的协议 使用UDP协议时,不需要建立连接,只需要知道对方的IP地址和端口号, ...

  4. 【BZOJ4361】isn

    题目 [BZOJ4361]isn 做法 \(dp_{i,j}\)表示以\(i\)结尾\(j\)长度,树状数组\(tree_{i,j}\)表长度为\(i\),以\(<=j\)结尾的个数,显然\(d ...

  5. shell 定义变量

    注意定义变量的语法: var="ABC" 等号之间不能有空格,否则会报错

  6. poj 1258 最小生成树 模板

    POJ 最小生成树模板 Kruskal算法 #include<iostream> #include<algorithm> #include<stdio.h> #in ...

  7. Windows 2003 复制大文件提示系统资源不足的处理方法

    方案一: 修改虚拟内存,让虚拟内存的大小略微超过要复制的文件的大小. 方案二: 修改注册表,如下: 注册表设置1 单击开始,单击运行,在打开框中键入“REGEDIT“ ,然后单击“确定”. 找到并单击 ...

  8. 遇到“拒绝了对对象的 EXECUTE 权限”和“无法作为数据库主体执行,因为主体 "dbo" 不存在、无法模拟这种类型的主体,或您没有所需的权限”的问题

    在将数据库从sqlserver2000迁移到2005后,原有的用户名TDS在执行存储过程是报错:“拒绝了对对象的 EXECUTE 权限”. 如网上所说,在使用的数据库的属性页->权限中给TDS添 ...

  9. 51nod 1681

    题目 神犇题解 这题挺神的..思路很巧妙 首先想到DFS序(毕竟是子树问题),这道题可以转化成:我们对于每一个节点的子树区间去看,两棵树同一节点的这个子树区间有多少个相同元素,设个数为x,那么这个点的 ...

  10. 转 Java Classloader机制解析

    转 Java Classloader机制解析 发表于11个月前(2014-05-09 11:36)   阅读(693) | 评论(0) 9人收藏此文章, 我要收藏 赞1 慕课网,程序员升职加薪神器,点 ...