生成数计数

对于一个无向简单图,nnn个点和n−1n-1n−1条边构成一个生成树,生成树计数就是求这个无向图中一共有几种不同的生成树(任意两边不同)

  • 度矩阵
    n×nn × nn×n 的矩阵,统计每个点的度数,只有i=ji= ji=j时矩阵才有正值,其余为零。
  • 邻接矩阵
    n×nn × nn×n 的矩阵,如果(u,v)(u,v)(u,v)存在边,对应矩阵g[u][v]=g[v][u]=1g[u][v] = g[v][u] = 1g[u][v]=g[v][u]=1,其余为零。
  • 拉普拉斯矩阵(Laplacian matrix) 也叫做导纳矩阵、基尔霍夫矩阵(Kirchhoff)或离散拉普拉斯算子,主要应用在图论中,作为一个图的矩阵表示。
    度矩阵 - 邻接矩阵

生成树的个数就是Kirchhoff矩阵n−1n-1n−1阶行列式的值
行列式模板

对于有重边的情况,拉普拉斯矩阵矩阵也能用.

例题

  • ACcode
  • UVA 10766
    题意:公司的一些部门不能存在直接的隶属关系,问一共有多少分配部门关系的方案
    生成树计数的裸题,把不能直接隶属的标记一下,求出矩阵就行
  • SPOJ DETER3
    裸题
  • URAL 1627
    题意:让所有相邻的卧室连成一个生成树,枚举每个点的四个方向求出矩阵
  • HDU 4305
    题意:给出nnn个点,两点之间距离不超过一定距离的点可以相互传染,但是中间不能有其他的点。
    暴力枚举所有点如果符合第一个条件,再暴力判断两点之间是不是有第三个点。
    需要判断点在不在线段上,首先叉积看3点是否共线,然后判断点是不是在两点确定的矩形内部
  • HDU 4408
    题意:带权生成树,求一共有几个最小生成树。
    Kruskal思想,从最小的点开始合并,权值相同的边不会影响的下一个权值的合并。我们只需求所有权值情况下的生成数个数,然后相乘。
    中间用到缩点存在重边,不过不影响矩阵的性质
  • SPOJ HIGH
    裸题

Matrix-Tree (生成树计数)相关推荐

  1. 计算任意一个图生成树的个数——Kirchhoff 的Matrix Tree 方法Java实现

    计算任意一个图的生成树的个数,是Kirchhoff提出的理论,通常称为Matrix Tree Theorem,原理很简单: Let G be a graph with V(G)={v1,v2,..., ...

  2. java tree degree_生成树计数-Matrix-Tree定理

    /* *算法引入: *给定一个无向图G,求它生成树的个数t(G); * *算法思想: *(1)G的度数矩阵D[G]是一个n*n的矩阵,并且满足:当i≠j时,dij=0;当i=j时,dij等于vi的度数 ...

  3. bzoj 1016 [JSOI2008]最小生成树计数——matrix tree(相同权值的边为阶段缩点)(码力)...

    题目:https://www.lydsy.com/JudgeOnline/problem.php?id=1016 就是缩点,每次相同权值的边构成的联通块求一下matrix tree.注意gauss里的 ...

  4. 【矩阵乘法】生成树计数(luogu 2109/NOI 2007)

    生成树计数 luogu 2109 题目大意 有n个排成一列的点,把距离不超过k的点之间连边,问这个图的生成树个数 输入样例 3 5 输出样例 75 样例说明 样例对应的图如下: 数据范围 解题思路 因 ...

  5. [学习笔记] Matrix tree定理

    前言 为了回归算法本身,为了搞懂算法,我参考了不同博客,并将他们做出整合和补充: https://www.luogu.com.cn/blog/tanrui-2960967961/matrix-tree ...

  6. bzoj1002 生成树计数 找规律

    这道题第一眼是生成树计数,n是100,是可以用O(n^3)的求基尔霍夫矩阵的n-1阶的子矩阵的行列式求解的,但是题目中并没有说取模之类的话,就不好办了. 用高精度?有分数出现. 用辗转相除的思想,让它 ...

  7. 最短路径生成树计数+最短路径生成树

    最短路径生成树计数. 我们应该先明白什么是最短路径生成树,不会戳这里. 计数方法明显是要使用乘法原理计数,也就是说我们可以得出每一步的方案数再乘进答案中. 接下来考虑如何的出每一步的方案数,所谓方案数 ...

  8. Ural 1627 Join(生成树计数)

    http://acm.timus.ru/problem.aspx?space=1&num=1627 生成树计数的题,直接用Matrix-Tree定理就可以解决问题了. 代码如下: View C ...

  9. 图论 —— 生成树 —— 生成树计数

    [概述] 给出一个由 n 个点和 m 条边构成的简单无向加权图,有时需要对生成树计数或对最小生成树计数. 当对生成树计数时,利用基尔霍夫矩阵的 Matrix-Tree 定理即可解决,而对最小生成树计数 ...

最新文章

  1. [20170914]tnsnames.ora的管理.txt
  2. BAT 批处理命令 - 文件批量复制、克隆功能实例演示
  3. java concurrent 框架,java.util.concurrent 包下的 Synchronizer 框架
  4. SQL优化二(SQL性能调优)
  5. Spark之Spark角色介绍及运行模式
  6. mysql同步大师_数据库大师成长日记:您最需要了解的NoSQL非关系型数据库
  7. linux系统网络编程简介,Linux网络编程入门
  8. 典型相关分析(CCA)简述
  9. java 全双工串口,Java实现全双工串口通信
  10. 王者荣耀战力查询微信小程序源码下载支持安卓苹果微信Q等多区查询
  11. ListView的增删改查(实战)
  12. Ashen的成长,从CSDN博客开始!
  13. Kong的插件:Request Size Limiting
  14. 视频码率(Bitrate),帧率(FPS)和分辨率的联系与区别
  15. Java开发面试常见的技术问题整理
  16. 问到的知识(蓝色板儿砖的教学)
  17. 2011:那些逝去的IT英才
  18. 三员之三权分立BMB20-2007
  19. 阿里的新游戏—计蒜客A1183
  20. 单容水箱液位pid控制实验报告_实验二(单容水箱液位pid控制实验)实验报告电子版.doc...

热门文章

  1. 加入新的地方,要开始积累了
  2. CVE-2010-0249 极光
  3. 使用MiniProfiler跟踪MVC + EF + Bootstrap 2 权限管理系统的性能消耗
  4. unity 总结(一)
  5. Fragment 与 Fragment 相互传值
  6. 表格cell之间的横线不显示
  7. C#软件winform程序安装包制作及卸载程序制作
  8. 如果爱情不会让人受伤
  9. 【数据结构与算法】之深入解析“矩形区域不超过K的最大数值和”的求解思路与算法示例
  10. 316. Remove Duplicate Letters 去除重复字母