Matrix-Tree (生成树计数)

生成数计数

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

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

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

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

例题

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

猜你喜欢

转载自blog.csdn.net/henuyh/article/details/88842178