题目: In some countries building highways takes a lot of time... Maybe that's because there are many possiblities to construct a network of highways and engineers can't make up their minds which one to choose. Suppose we have a list of cities that can…
SPOJ104 Highways Description In some countries building highways takes a lot of time- Maybe that's because there are many possiblities to construct a network of highways and engineers can't make up their minds which one to choose. Suppose we have a l…
In some countries building highways takes a lot of time... Maybe that's because there are many possiblities to construct a network of highways and engineers can't make up their minds which one to choose. Suppose we have a list of cities that can be c…
最近集中学习了一下矩阵树定理,自己其实还是没有太明白原理(证明)类的东西,但想在这里总结一下应用中的一些细节,矩阵树定理的一些引申等等. 首先,矩阵树定理用于求解一个图上的生成树个数.实现方式是:\(A\)为邻接矩阵,\(D\)为度数矩阵,则基尔霍夫(Kirchhoff)矩阵即为:\(K = D - A\).具体实现中,记 \(a\) 为Kirchhoff矩阵,则若存在 \(E(u, v)\) ,则\(a[u][u] ++, a[v][v] ++, a[u][v] --, a[v][u] --\…
https://blog.csdn.net/zhaoruixiang1111/article/details/79185927 为了学一个矩阵树定理 从行列式开始学(就当提前学线代了.. 论文生成树的计数及其应用 矩阵数定理: 截图来自于上述论文 裸题. #include<cstdio> #include<cstdlib> #include<cstring> #include<iostream> using namespace std; ; ; double…
欲学矩阵树定理必先自宫学习一些行列式的姿势 然后做一道例题 #include <iostream> #include <cstring> #include <cstdio> #include <cmath> using namespace std; typedef long long ll; int T, n, m, uu, vv; double w[15][15]; const double eps=1e-7; void gauss(){ n--; for…
矩阵树定理 Matrix Tree ​ 矩阵树定理主要用于图的生成树计数. 看到给出图求生成树的这类问题就大概要往这方面想了. 算法会根据图构造出一个特殊的基尔霍夫矩阵\(A\),接着根据矩阵树定理,用\(A\)计算出生成树个数. 1.无向图的生成树计数 对于给定的可含重边的连通无向图\(G\),求其生成树的个数.求法如下: 定义度数矩阵\(D\):该矩阵仅在对角线上有值,\(D_{i,i}\)表示\(i\)号点的度数.对于图中每一条无向边\((u,v)\),\(D_{u,u}\)++,\(D_…
题目背景 又到了某任*堂开关中学一年一度的自主招生考试的时间了,在考试完后许多家长决定带着自己的孩子参观一下这所距千年名校还有890周年的百年学校: 题目描述 这所学校的布局非常奇怪,是一个由N 个点M 条边构成的无向图,既然来了肯定要把学校逛完. 家长们的思路也非常清奇,带孩子走过的边刚好有n-1 条,并且这n-1 条边构成了原图的一棵生成树. 每条边上所能看到的风景有两个固定的价值A 和B ,走了这条边就只能得到这条边的A价值,而没走的边就只能得到那条边的B 价值,每个家庭最终看到的总价值的…
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=1016 从 Kruskal 算法的过程来考虑产生多种方案的原因,就是边权相同的边有一样的功能,从而带来了多种选择: 对于每一层次(边权相同)的边来说,它们最终会把图进一步连通: 所以在这一层之前缩好点,看看这一层连接出几个新连通块,对于每个连通块内部做矩阵树定理求生成树个数,再乘法原理乘起来即可: 注意高斯消元的矩阵不能直接用原图的点标号等,求行列式会出错: 疑惑:以及高斯消元 return…
传送门 题意: 给定一个一边点数为n,另一边点数为m,共有n*m条边的带标号完全二分图$K_{n,m}$ 求生成树个数 1 <= n,m,p <= 10^18 显然不能暴力上矩阵树定理 看过推到完全图的生成树个数后这道题也不难做 构建出基尔霍夫矩阵,找一个主子式,所有行加起来放一行上,用这一行消消消就发现最后对角线上有$n-1$个$m$和$m-1$个$n$和$1$个$1$ 然后要用快速乘...蒟蒻第一次用快速乘... #include <iostream> using namesp…
4596: [Shoi2016]黑暗前的幻想乡 Time Limit: 20 Sec  Memory Limit: 256 MBSubmit: 559  Solved: 325[Submit][Status][Discuss] Description 四年一度的幻想乡大选开始了,最近幻想乡最大的问题是很多来历不明的妖 怪涌入了幻想乡,扰乱了幻想乡昔日的秩序.但是幻想乡的建制派妖怪(人类) 博丽灵梦和八云紫等人整日高谈所有妖怪平等,幻想乡多元化等等,对于幻想乡 目前面临的种种大问题却给不出合适的解…
[LOJ#6072]苹果树(矩阵树定理,折半搜索,容斥) 题面 LOJ 题解 emmmm,这题似乎猫讲过一次... 显然先\(meet-in-the-middle\)搜索一下对于每个有用的苹果数量,满足权值小于\(lim\)的方案数 ,那么只需要考虑它们构成生成树的方案数就好了. 显然有用的可以和所有的有用的或者是坏的连边,好的但不有用的只能和坏的连边,而坏的随意. 但是这样子算出来的结果是至多,因此还需要额外容斥一下计算生成树的个数. #include<iostream> #include&…
传送门 矩阵树定理模板题. 题意简述:自己看题面吧太简单懒得写了 直接构建出这4n4n4n个点然后按照题面连边之后跑矩阵树即可. 代码: #include<bits/stdc++.h> #define ri register int #define idx(x) ((x)%n) using namespace std; const int N=505,mod=2007; int n,a[N][N]; inline void add(int u,int v){++a[u][u],++a[v][v…
题意 给你 \(n\) 个点的无向完全图,指定一棵树 \(S\),问有多少棵生成树和这棵树的公共边数量为 \(k\in[0,n-1]\) \(n\leq 100\) 分析 考虑矩阵树定理,把对应的树边的边权设置成 \(x\) 然后构造基尔霍夫矩阵, 结果记为 \(val\) ,有 \[val=\sum_\limits{i=0}^{n-1}x^ians_i\] 其中 \(ans_i\) 表示和 \(S\) 的公共边数量为 \(i\) 的生成树的个数. 发现这是一个关于 \(x\) 的多项式,我们要…
题目描述 给出 $n$ 个点和 $n-1$ 种颜色,每种颜色有若干条边.求这张图多少棵每种颜色的边都出现过的生成树,答案对 $10^9+7$ 取模. 输入 第一行包含一个正整数 N(N<=17), 表示城市个数. 接下来 N-1 行,其中第 i行表示第 i个建筑公司可以修建的路的列表: 以一个非负数mi 开头,表示其可以修建 mi 条路,接下来有mi 对数, 每对数表示一条边的两个端点.其中不会出现重复的边,也不会出现自环. 输出 仅一行一个整数,表示所有可能的方案数对 10^9 + 7 取模的…
[BZOJ5133][CodePlus2017年12月]白金元首与独舞 题面:www.lydsy.com/JudgeOnline/upload/201712/div1.pdf 题解:由于k很小,考虑用矩阵树定理. 我们先预处理出:从每个已决策点,一直走下去会走到哪个未决策点(我们将最外面看作一个大的未决策点).可以用拓扑排序搞定,若有环则无解. 然后我们枚举每个未决策点的四个方向,看一下一直走下去会走到哪个点,在新图中从这个点到终点连一条边.得到新图的出度矩阵和邻接矩阵,求出|出度矩阵-邻接矩阵…
http://acm.csu.edu.cn/csuoj/problemset/problem?pid=1805 题意: A和B之间有a条边,A和G之间有b条边,B和G之间有c条边.现在从A点出发走遍所有的边,然后再回到A点,问一共有多少种方法. 思路: 16年湖南省赛题目,这道题目是求欧拉回路的个数,和生成树的计数有一定的联系. 首先给出神奇的Best定理,这是什么鬼定理,反正查不到什么有关该定理的文章... $ec(G)=t_s(G)\cdot deg(s)! \cdot \prod_{v\i…
http://www.lydsy.com/JudgeOnline/problem.php?id=2467 题意: 思路:要用矩阵树定理不难,但是这里的话需要取模,所以是需要计算逆元的,但是用辗转相减会更简单. 引用一大神博客里的介绍:http://blog.csdn.net/u013010295/article/details/47451451 值得一提的是,有些题目要求行列式模上一个数的结果.怎么求模意义下的行列式呢?这些题答案都比较大,用浮点数的话精度达不到要求,确实是一个问题.(显然强行用…
传送门 第一次写矩阵树定理. 就是度数矩阵减去邻接矩阵之后得到的基尔霍夫矩阵的余子式的行列式值. 这个可以用高斯消元O(n3)" role="presentation" style="position: relative;">O(n3)O(n3)求. 代码: #include<bits/stdc++.h> #define eps 1e-5 #define N 20 using namespace std; int n,m,c[N][N],…
[BZOJ3534]重建(矩阵树定理) 题面 BZOJ 洛谷 题解 这.... 矩阵树定理神仙用法???? #include<iostream> #include<cmath> using namespace std; #define ll long long #define eps 1e-8 int n; double g[55][55],s=1; double Gauss() { double ret=1; for(int i=1;i<n;++i) { int nw=i;…
题目链接 CF917D:https://codeforces.com/problemset/problem/917/D TopCoder13369:https://community.topcoder.com/stat?c=problem_statement&pm=13369 题解 首先分析 CF917D. 我们考虑能否将树上的边的贡献特殊表现出来. 记原树为 \(T\),我们构造一幅 \(n\) 个结点的无向完全图,并设置一个值 \(x\),对于无向边 \((u, v)\),其权值 \(w_{…
题目链接: https://www.lydsy.com/JudgeOnline/problem.php?id=1002 题目大意: 给定n(N<=100),编程计算有多少个不同的n轮状病毒 思路: 大部分题解都是直接一个递推公式,具体得来的方法由矩阵树定理可以求得. 只是求矩阵的行列式的时候比较复杂. 具体证明过程:http://vfleaking.blog.163.com/blog/static/17480763420119685112649/ 需要高精度 #include <bits/st…
题目描述 给定一个 $n\times m$ 的方格图,每个格子有 ↑.↓.←.→,表示从该格子能够走到相邻的哪个格子.有一些格子是空着的,需要填上四者之一,需要满足:最终的方格图中,从任意一个位置出发都能够走出方格图.求方案数 mod 10^9+7. $数据组数\le 10$ ,$n,m\le 300$ ,$空格子数k\le 200$ 题解 并查集+矩阵树定理 由于k很小,又是计数问题,考虑矩阵树定理. 先使用并查集处理出从每个位置开始,最终会走到哪个位置.显然如果有环则答案为0,否则一定走到的…
[BZOJ4596]黑暗前的幻想乡(矩阵树定理,容斥) 题面 BZOJ 有\(n\)个点,要求连出一棵生成树, 指定了一些边可以染成某种颜色,一共\(n-1\)种颜色, 求所有颜色都出现过的生成树方案数. 题解 一脸的容斥啊. 先矩阵树定理暴力算出所有符合条件的生成树,然后减去\(n-2\)中颜色的方案数, 再加上\(n-3\)种颜色的方案数...... 所以直接暴力枚举颜色的子集,每次矩阵树就好了. 时间复杂度大概是\(O(2^{n-1}n^3log)\)??? 虽然\(log\)小的不行,甚…
4596: [Shoi2016]黑暗前的幻想乡 Time Limit: 20 Sec  Memory Limit: 256 MBSubmit: 324  Solved: 187 Description 四年一度的幻想乡大选开始了,最近幻想乡最大的问题是很多来历不明的妖 怪涌入了幻想乡,扰乱了幻想乡昔日的秩序.但是幻想乡的建制派妖怪(人类) 博丽灵梦和八云紫等人整日高谈所有妖怪平等,幻想乡多元化等等,对于幻想乡 目前面临的种种大问题却给不出合适的解决方案. 风间幽香是幻想乡里少有的意识到了问题的严…
1016: [JSOI2008]最小生成树计数 Description 现在给出了一个简单无向加权图.你不满足于求出这个图的最小生成树,而希望知道这个图中有多少个不同的最小生成树.(如果两颗最小生成树中至少有一条边不同,则这两个最小生成树就是不同的).由于不同的最小生成树可能很多,所以你只需要输出方案数对31011的模就可以了. Input 第一行包含两个数,n和m,其中1<=n<=100; 1<=m<=1000; 表示该无向图的节点数和边数.每个节点用1~n的整数编号.接下来的m…
首先,我们需要求的是 $$\sum\limits_{Tree} \prod\limits_{E \in Tree} E(u, v) \prod\limits_{E \notin Tree} (1 - E(u, v))$$ 我们知道变元矩阵树定理 ---> 不知道请见此 我们自然希望要求和的事物只跟生成树的边有关 因此考虑把$\prod\limits_{E \notin Tree} (1 - E(u, v))$转化为$\prod\limits_{E} (1 - E(u, v)) * \frac{1…
BZOJ5297 CQOI2018 社交网络 Description 当今社会,在社交网络上看朋友的消息已经成为许多人生活的一部分.通常,一个用户在社交网络上发布一条消息(例如微博.状态.Tweet等)后,他的好友们也可以看见这条消息,并可能转发.转发的消息还可以继续被人转发,进而扩散到整个社交网络中.在一个实验性的小规模社交网络中我们发现,有时一条热门消息最终会被所有人转发.为了研究这一现象发生的过程,我们希望计算一条消息所有可能的转发途径有多少种.为了编程方便,我们将初始消息发送者编号为1,…
[BZOJ4894]天赋(矩阵树定理) 题面 BZOJ Description 小明有许多潜在的天赋,他希望学习这些天赋来变得更强.正如许多游戏中一样,小明也有n种潜在的天赋,但有 一些天赋必须是要有前置天赋才能够学习得到的.也就是说,有一些天赋必须是要在学习了另一个天赋的条件下才 能学习的.比如,要想学会"开炮",必须先学会"开枪".一项天赋可能有多个前置天赋,但只需习得其中一个就可 以学习这一项天赋.上帝不想为难小明,于是小明天生就已经习得了1号天赋-----&…
[BZOJ5297][CQOI2018]社交网络(矩阵树定理) 题面 BZOJ 洛谷 Description 当今社会,在社交网络上看朋友的消息已经成为许多人生活的一部分.通常,一个用户在社交网络上发布一条消息 (例如微博.状态.Tweet等)后,他的好友们也可以看见这条消息,并可能转发.转发的消息还可以继续被人转 发,进而扩散到整个社交网络中.在一个实验性的小规模社交网络中我们发现,有时一条热门消息最终会被所有人 转发.为了研究这一现象发生的过程,我们希望计算一条消息所有可能的转发途径有多少种…