首页 > 代码库 > BZOJ 1002 轮状病毒(生成树个数)
BZOJ 1002 轮状病毒(生成树个数)
题目链接:http://61.187.179.132/JudgeOnline/problem.php?id=1002
题意:求下面这种造型的生成树的个数。
思路:生成树的个数可以用那个矩阵A:A[i][i]等于i的度数,A[i][j]等于i到j的边数的相反数。那么A的任意一个n-1阶的行列式(就是删掉任意一行一列)就是生成树的个数。但是这里有一个递推公式,暴力完前几项可以找出这个,f[n]=3*f[n-1]-f[n-2]+2。
import java.util.*;import java.text.*;import java.math.*;public class Main{ public static void PR(String s){ System.out.println(s); } public static void PR(int x) { System.out.println(x); } public static void PR(BigInteger x) { System.out.println(x); } public static void PR(double s) { java.text.DecimalFormat d=new java.text.DecimalFormat("#.000000"); System.out.println(d.format(s)); } static BigInteger a,b,c; static int n; public static void main(String[] args){ Scanner S=new Scanner(System.in); while(S.hasNext()) { n=S.nextInt(); a=BigInteger.ONE; b=BigInteger.valueOf(5); int i; if(n==1) PR(a); else if(n==2) PR(b); else { for(i=3;i<=n;i++) { c=b.multiply(BigInteger.valueOf(3)); c=c.subtract(a).add(BigInteger.valueOf(2)); a=b; b=c; } PR(c); } } }}
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。