题目链接 \(Description\) 一个国家有1~n座城市,其中一些城市之间可以修建高速公路(无自环和重边). 求有多少种方案,选择修建一些高速公路,组成一个交通网络,使得任意两座城市之间恰好只有一条路径. \(Solution\) 生成树计数 直接上Matrix Tree 无解情况别忘了判 MatrixTree定理大体见这吧,证明别的应用什么的先不管了. 基尔霍夫矩阵=度数矩阵-边矩阵. #include <cmath> #include <cstdio> #include…
结论:一个图的生成树个数等于它的度数矩阵减邻接矩阵得到的矩阵(基尔霍夫矩阵)的任意一个n-1阶主子式的行列式的绝对值 证明:不会 求法:高斯消元 例题:[HEOI2013]小Z的房间 #include <iostream> #include <cstdio> #include <cstring> #define int long long using namespace std; const int dx[]={0,1,0,-1},dy[]={1,0,-1,0},mod…
spoj 104 Highways 生成树计数,matrix-tree定理的应用. Matrix-tree定理: D为无向图G的度数矩阵(D[i][i]是i的度数,其他的为0),A为G的邻接矩阵(若u,v之间存在边,A[u][v]=A[v][u]=1),C=D-A. 对于一个无向图G,它的生成树个数等于其Kirchhoff矩阵任何一个n-1阶主子式的行列式的绝对值. 所谓n-1阶主子式,就是对于任意一个r,将C的第r行和第r列同表示时删去后的新矩阵,表示为Cr. 求行列式的值: 把矩阵用高斯消元…
目录 @0 - 参考资料@ @0.5 - 你所需要了解的线性代数知识@ @1 - 矩阵树定理主体@ @证明 part - 1@ @证明 part - 2@ @证明 part - 3@ @证明 part - 4@ @2 - 一些简单的推广@ @3 - 例题与应用@ @4 - prüfer 序列@ @0 - 参考资料@ MoebiusMeow 的讲解(超喜欢这个博主的!) 网上找的另外一篇讲解 @0.5 - 你所需要了解的线性代数知识@ 什么是矩阵? 什么是高斯消元?这个虽然与主题无关,但是求解行列…
Description 现在给出了一个简单无向加权图.你不满足于求出这个图的最小生成树,而希望知道这个图中有多少个不同的最小生成树.(如果两颗最小生成树中至少有一条边不同,则这两个最小生成树就是不同的).由于不同的最小生成树可能很多,所以你只需要输出方案数对31011的模就可以了. Input 第 一行包含两个数,n和m,其中1<=n<=100; 1<=m<=1000; 表示该无向图的节点数和边数.每个节点用1~n的整数编号.接下来的m行,每行包含两个整数:a, b, c,表示节点…
[SPOJ]Highways(矩阵树定理) 题面 Vjudge 洛谷 题解 矩阵树定理模板题 无向图的矩阵树定理: 对于一条边\((u,v)\),给邻接矩阵上\(G[u][v],G[v][u]\)加一 对于一条边\((u,v)\),给度数矩阵上\(D[u][u],D[v][v]\)加一 定义霍尔基夫矩阵\(C=D-G\) 将基尔霍夫矩阵去除任意一行和任意一列之后, 得到一个\((n-1)*(n-1)\)的行列式\(C\) 求解这个行列式的值,最后的\(|det(C)|\)就是结果 #includ…
[背诵手记]Matrix Tree定理和一些推广 结论 对于一个无向图\(G=(V,E)\),暂时钦定他是简单图,定义以下矩阵: (入)度数矩阵\(D\),其中\(D_{ii}=deg_i\).其他=0 邻接矩阵\(A\),其中\(A_{ij}=[\exist e=(i,j)]\).其他=0 (*******wait!*******) 关联矩阵\(B\),其中\(B_{ij}=[\exist e_i=(a,b)](-1)^{[a>b]}\).其他=0(后面会用到) 拉普拉斯矩阵\(L=D-A\)…
老久没更了,冬令营也延期了(延期后岂不是志愿者得上学了?) 最近把之前欠了好久的债,诸如FFT和Matrix-Tree等的搞清楚了(啊我承认之前只会用,没有理解证明--),FFT老多人写,而MatrixTree没人证我就写一下吧-- Matrix Tree结论 Matrix Tree的结论网上可多,大概一条主要的就是,图中生成树的数量等于 \(V-E\) 的任一余子式,其中: \(V\) 为对角阵,第 \(i\) 个元素为点 \(i\) 的度数 \(E\) 为对称阵,对角线为零且 \(E_{i,…
题目链接 辗转相除解行列式的具体实现? 行列式的基本性质. //864kb 64ms //裸的Matrix Tree定理.练习一下用辗转相除解行列式.(因为模数不是质数,所以不能直接乘逆元来高斯消元.) //注意题目是将所有房间(这些才是点)连成一棵树,墙非节点,即行列式中只存在表示房间的点.否则就很可能无解了.. #include <cstdio> #include <algorithm> #define mod (1000000000) const int N=103,way[…
题目链接 最小生成树有两个性质: 1.在不同的MST中某种权值的边出现的次数是一定的. 2.在不同的MST中,连接完某种权值的边后,形成的连通块的状态是一样的. \(Solution1\) 由这两个性质,可以先求一个MST,再枚举每一组边(权值相同的看做一组边),对每组边DFS(\(O(2^{10})\)),若某种方案连通性同MST相同(记录连通块个数即可).则sum++. 最后根据乘法原理,最后的答案即为所有sum相乘. \(Solution2\) 容易想到MatrixTree定理. 按边权从…