//    poj 1737 Connected Graph
//
// 题目大意:
//
// 带标号的连通分量计数
//
// 解题思路:
//
// 设f(n)为连通图的数量,g(n)为非连通图的数量,h(n)为所有的
// 图的数量,h(n) = 2 ^(n * (n - 1) / 2);
// f(n) + g[n] = h(n).
//
// 考虑标号为1在哪个连通分量内,设连通分量内有k个点,则问题为
// 在n-1个点中选择k-1个点的方法数 C(n-1,k-1),此时1所在的连通图数
// 为f(k),另一部分为n-k个点的图的所有数量,因为此时已经设了1所在
// 的连通图和剩余部分已经是不连通了,则
// g(n) = sigma(C(n-1,k-1)*f(k)*h(n-k)){ 1<= k <= n-1}
// f[n] = h[n] - g[n]; import java.util.*;
import java.io.*;
import java.math.BigInteger; class Main{
public static void main(String[] args){
final int MAX_N = ; BigInteger[][] C = new BigInteger[MAX_N][MAX_N]; BigInteger[] f = new BigInteger[MAX_N];
BigInteger[] g = new BigInteger[MAX_N];
BigInteger[] h = new BigInteger[MAX_N]; C[][] = new BigInteger(""); for (int i=;i<MAX_N;i++){ C[i][] = C[i][i] = new BigInteger(""); for (int j=;j<i;j++){
C[i][j] = new BigInteger("");
C[i][j] = C[i][j].add(C[i-][j]);
C[i][j] = C[i][j].add(C[i-][j-]);
}
} for (int i=;i<MAX_N;i++){
h[i] = new BigInteger("");
h[i] = h[i].pow(i*(i-)/);
}
f[] = h[] = new BigInteger("");
for (int i=;i<MAX_N;i++){
g[i] = new BigInteger(""); for (int j=;j<i;j++){
g[i] = g[i].add(C[i-][j-].multiply(f[j].multiply(h[i-j])));
}
f[i] = h[i].subtract(g[i]);
} Scanner sc = new Scanner(System.in);
while(sc.hasNextInt()){ int x = sc.nextInt();
if (x==)
break;
System.out.println(f[x]);
} }
}

poj 1737 Connected Graph的更多相关文章

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

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

  2. POJ 1737 Connected Graph (大数+递推)

    题目链接: http://poj.org/problem?id=1737 题意: 求 \(n\) 个点的无向简单(无重边无自环)连通图的个数.\((n<=50)\) 题解: 这题你甚至能OEIS ...

  3. POJ 1737 Connected Graph(高精度+DP递推)

    题面 \(solution:\) 首先做个推销:带负数的压位高精度(加减乘+读写) 然后:由 \(N\) 个节点组成的无向图的总数为: \(2^{N*(N-1)/2}\) (也就是说这个图总共有 \( ...

  4. POJ1737 Connected Graph

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

  5. Connected Graph

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

  6. 【poj1737】 Connected Graph

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

  7. poj 3334 Connected Gheeves (Geometry + BInary Search)

    3334 -- Connected Gheeves 题意是,给出两个尖形的相连的容器,要求向其中灌水.它们具有日常的物理属性,例如两个容器中水平面高度相同以及水高于容器顶部的时候就会溢出.开始的时候打 ...

  8. poj 1737男人八题之一 orz ltc

    这是楼教主的男人八题之一.很高兴我能做八分之一的男人了. 题目大意:求有n个顶点的连通图有多少个. 解法: 1.  用总数减去不联通的图(网上说可以,我觉得时间悬) 2.    用动态规划(数学递推) ...

  9. POJ 1737 统计有n个顶点的连通图有多少个 (带标号)

    设f(n)为所求答案 g(n)为n个顶点的非联通图 则f(n) + g(n) = h(n) = 2^(n * (n - 1) / 2) 其中h(n)是n个顶点的联图的个数 这样计算 先考虑1所在的连通 ...

随机推荐

  1. HDU1054 Strategic Game——匈牙利算法

    Strategic Game Bob enjoys playing computer games, especially strategic games, but sometimes he canno ...

  2. IOS TableView 去除点击后产生的灰色背景

    - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPa ...

  3. sql server中自连接的使用

    一.用SQL自连接查询处理列之间的关系 SQL自身连接,可以解决很多问题.下面举的一个例子,就是使用了SQL自身连接,它解决了列与列之间的逻辑关系问题,准确的讲是列与列之间的层次关系.SQL代码如下: ...

  4. python之socket 网络编程

    提到网络通信不得不复习下osi七层模型: 七层模型,亦称OSI(Open System Interconnection)参考模型,是参考模型是国际标准化组织(ISO)制定的一个用于计算机或通信系统间互 ...

  5. Phpstorm 设置取消自动保存

    个人通过使用,发现PhpStorm的确是 编辑PHP 的神器,提供用户效率,提供智能代码补全,快速导航以及即时错误检查. 不过,让我用起来不爽的是,它会自动保存,还不能使用快捷键Ctr+Z来撤销,也就 ...

  6. 写单独页面的一些通用css样式,做了一点点兼容

    /*全局变量*/*{margin:0;padding:0;}body{font-size:14px;font-family:"microsoft yahei";overflow:v ...

  7. DataSet用法详细 转

    DataSet用法详细 转 DataSet用法详细 一.特点介绍 1.处理脱机数据,在多层应用程序中很有用. 2.可以在任何时候查看DataSet中任意行的内容,允许修改查询结果的方法. 3.处理分级 ...

  8. android app上线后bug的处理

    app上线后,后期维护显得尤为重要,今天给大家分享一下app上线后出现bug后的解决方法 1.继承Application类,重写onCreate方法 import java.io.File; impo ...

  9. 使用odoo价格表[pricelist]对价格进行特别处理,如 .99

    问题1, 销售价格 自动设置为 9.99 问题2, 将销售价格从 10.5 设置为 10.00 这些都可以用 priceList 实现,具体实现如下 首先,启用 priceList 在 价格表项目 有 ...

  10. ASCII、Unicode、GBK和UTF-8字符编码的区别联系

    转自http://dengo.org/archives/901 很久很久以前,有一群人,他们决定用8个可以开合的晶体管来组合成不同的状态,以表示世界上的万物.他们看到8个开关状态是好的,于是他们把这称 ...