【Matrix-tree Theorem学习笔记】
定义度数矩阵\(D(G)\):
定义邻接矩阵\(C(G)\):
定义\(Laplace\)矩阵\(A\)
\(
A(G) = D(G) - C(G)
\)
记图\(G\)的所有生成树权值和为\(t(G)\)
一颗树形结构的权值为该树所有边权的积
无向图情况:
如果存在一条边\((x,y,w)\)
则\(D_{x,x},D_{y,y} += w\)
则\(C_{x,y},C_{y,x} += w\)
则\(A\)删除根节点对应的行和列,剩下的\(n - 1\)阶主子式则是权值之和
有向图情况:
如果存在一条边\((x,y,w)\)
如果统计根向树形图则\(D_{x,x} += w\)
如果统计外向树形图则\(D_{y,y} += w\)
两种情况都为
\(C_{x,y} += w\)

权设为\(1\)则可以统计生成树个数。
矩阵树
#include<iostream>
#include<cstdio>
#define ll long long
#define N 305
#define mod 1000000007
#define inv(x) (fpow(x,mod - 2))
ll n,m,typ;
ll a[N][N];
ll fpow(ll x,ll k){
ll ans = 1;
while(k){
if(k & 1)
ans = ans * x % mod;
x = x * x % mod;
k >>= 1;
}
return ans;
}
void del(int r){
for(int i = 1;i <= n;++i)
for(int j = 1;j <= n;++j){
if(i != r && j != r){
ll x = i > r ? i - 1 : i;
ll y = j > r ? j - 1 : j;
a[x][y] = a[i][j];
}
}
}
ll det(){
ll ans = 1;
for(int i = 1;i <= n;++i){
if(!a[i][i]){
for(int j = i + 1;j <= n;++j){
if(a[j][i]){
for(int k = 1;k <= n;++k)
std::swap(a[i][k],a[j][k]);
ans -= ans;
break;
}
}
}
ll t = inv(a[i][i]);
for(int j = i + 1;j <= n;++j){
ll f = a[j][i] * t % mod;
for(int k = i;k <= n;++k)
a[j][k] = (a[j][k] - a[i][k] * f % mod) % mod;
}
}
for(int i = 1;i <= n;++i)
ans = ans * a[i][i] % mod;
return (ans % mod + mod) % mod;
}
int main(){
scanf("%lld%lld%lld",&n,&m,&typ);
ll x,y,z;
for(int i = 1;i <= m;++i){
scanf("%lld%lld%lld",&x,&y,&z);
if(x != y){
if(typ == 0){
a[x][x] = (a[x][x] + z) % mod,a[y][y] = (a[y][y] + z) % mod;
a[x][y] = (a[x][y] - z) % mod,a[y][x] = (a[y][x] - z) % mod;
}else{
a[y][y] = (a[y][y] + z) % mod;
a[x][y] = (a[x][y] - z) % mod;
}
}
}
del(1);
n -= 1;
std::cout<<det()<<std::endl;
}
【Matrix-tree Theorem学习笔记】的更多相关文章
- 【机器学习】决策树(Decision Tree) 学习笔记
[机器学习]决策树(decision tree) 学习笔记 标签(空格分隔): 机器学习 决策树简介 决策树(decision tree)是一个树结构(可以是二叉树或非二叉树).其每个非叶节点表示一个 ...
- 树上启发式合并(dsu on tree)学习笔记
有丶难,学到自闭 参考的文章: zcysky:[学习笔记]dsu on tree Arpa:[Tutorial] Sack (dsu on tree) 先康一康模板题吧:CF 600E($Lomsat ...
- [dsu on tree]【学习笔记】
十几天前看到zyf2000发过关于这个的题目的Blog, 今天终于去学习了一下 Codeforces原文链接 dsu on tree 简介 我也不清楚dsu是什么的英文缩写... 就像是树上的启发式合 ...
- 设备树(device tree)学习笔记
作者信息 作者:彭东林 邮箱:pengdonglin137@163.com 1.反编译设备树 在设备树学习的时候,如果可以看到最终生成的设备树的内容,对于我们学习设备树以及分析问题有很大帮助.这里我们 ...
- 设备树(device tree)学习笔记【转】
转自:https://www.cnblogs.com/pengdonglin137/p/4495056.html 阅读目录(Content) 1.反编译设备树 2.分析工具fdtdump 3.Linu ...
- 「Link-Cut Tree」学习笔记
Link-Cut Tree,用来解决动态树问题. 宏观上,LCT维护的是森林而非树.因此存在多颗LCT.有点像动态的树剖(链的确定通过$Access$操作),每条链用一颗$splay$维护.$spla ...
- Note -「Dsu On Tree」学习笔记
前置芝士 树连剖分及其思想,以及优化时间复杂度的原理. 讲个笑话这个东西其实和 Dsu(并查集)没什么关系. 算法本身 Dsu On Tree,一下简称 DOT,常用于解决子树间的信息合并问题. 其实 ...
- [学习笔记]Dsu On Tree
[dsu on tree][学习笔记] - Candy? - 博客园 题单: 也称:树上启发式合并 可以解决绝大部分不带修改的离线询问的子树查询问题 流程: 1.重链剖分找重儿子 2.sol:全局用桶 ...
- Matrix_tree Theorem 矩阵树定理学习笔记
Matrix_tree Theorem: 给定一个无向图, 定义矩阵A A[i][j] = - (<i, j>之间的边数) A[i][i] = 点i的度数 其生成树的个数等于 A的任意n ...
随机推荐
- java的加载与执行原理剖析
到目前为止,我们接触过的重点术语,总结一下: Java体系的技术被划分为三大块: JavaSE:标准版 JavaEE:企业版 JavaME:微型版 安装JDK之后: JDK:java开发工具箱 JRE ...
- 对比7种分布式事务方案,还是偏爱阿里开源的Seata,真香!(原理+实战)
前言 这是<Spring Cloud 进阶>专栏的第六篇文章,往期文章如下: 五十五张图告诉你微服务的灵魂摆渡者Nacos究竟有多强? openFeign夺命连环9问,这谁受得了? 阿里面 ...
- 封装一个简单的ajax请求
记录自己第一次封装ajax,肯定有很多考虑不周到,如有错误请指出,本人必将虚心改正. /** * * @param {Object} obj =>header:请求头:url:请求地址:meth ...
- 洛谷 P4774 [NOI2018] 屠龙勇士
链接:P4774 前言: 交了18遍最后发现是多组数据没清空/ll 题意: 其实就是个扩中. 分析过程: 首先发现根据题目描述的选择剑的方式,每条龙对应的剑都是固定的,有查询前驱,后继(在该数不存在前 ...
- 全志TinaLinux编译错误fatal error: unicode/ucnv.h: No such file or directory
今天开始正式干活了 拿到一个全志Tina的板子还有一个SDK压缩包,要求我这周(只剩一天半...)就要把sdk编译通过并且把板子跑起来. 还特别跟我说他们试了下这个sdk编译没法通过,会报错... 竟 ...
- Wedding DJ题解 (回归OI)
写在前面 高考结束了, 很遗憾, 我是其中的失败者, zzu, 没有想过最后来到这个学校, 并且还是信息安全专业, 不过, 时间久了, 也慢慢适应了: 当我被这个学校的这个专业录取, 也就注定着, 我 ...
- hdu 5170 GTY's math problem(水,,数学,,)
题意: 给a,b,c,d. 比较a^b和c^d的大小 思路: 比较log(a^b)和log(c^d)的大小 代码: int a,b,c,d; int main(){ while(scanf(" ...
- hdu 5172 GTY's gay friends(线段树最值)
题意: GTY有n个朋友,站成一排,每个人有一个特征值ai. 有m个询问.每次询问给两个数L,R.问你[L,R](即aL...aR)是否是1..(R-L+1)的一个全排列. 是输出YES,否则输出NO ...
- 谷歌chrome多个相同用户登陆同一个机器多开配置
创建快捷方式,目标中填写:路径+参数如下所示即可 参数:--user-data-dir=%LOCALAPPDATA%\Google\Chrome\%SessionName%
- 记一次 Java 导出大批量 Excel 优化
常用的excel导出方案,详情见Spring Boot 入门(十二):报表导出,对比poi.jxl和esayExcel的效率,其中jxl.esayEscel 底层都是基于 poi,它们仅仅是对 poi ...