生成树的计数 Matrix-Tree定理

好像之前gerw学长讲过一遍毕姥爷讲过一遍,然而并不懂。本来不打算学的不巧两天内遇到了三道这样的题,十分难受。

定理如下。

1.G的度数矩阵D[G] 是一个n∗n的矩阵 当i≠j时,dij=0;当i=j时,dij等于i的度数;
2.G的邻接矩阵A[G];

我们定义G的Kirchhoff矩阵(也称为拉普拉斯算子),C[G]=D[G]−A[G],则Matrix-Tree定理可以描述为:

G的所有不同的生成树的个数等于其Kirchhoff矩阵[G]任何一个n−1阶主子式的行列式的绝对值。

不会证。不想学。留个坑。可能也没有来填的机会了。

至少学会了怎么算行列式的值。。

认真地觉得我的代码写的十分优美。

#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
#include<cmath>
#include<queue>
#include<vector>
typedef long long LL;
const int maxn=100;
using namespace std;
double a[maxn][maxn];
int T,g[maxn][maxn],x,y,n,m;
bool zero(double x) {return (x>0?x:-x)<1e-15;}
double solve() {double res=1;    for(int i=1;i<n;i++) {int now=i;for(int j=i+1;j<n;j++) if(a[j][i]>a[now][i]) now=j;if(now!=i) for(int j=i;j<n;j++) swap(a[i][j],a[now][j]);if(zero(a[i][i])) return 0;res*=a[i][i];for(int j=i+1;j<n;j++) a[i][j]/=a[i][i];a[i][i]=1;for(int j=i+1;j<n;j++)for(int k=i+1;k<n;k++)a[j][k]-=a[j][i]*a[i][k];}if(res<0) res=-res;return res;
}
int main()
{scanf("%d",&T);while(T--) {scanf("%d%d",&n,&m);for(int i=1;i<=n;i++) for(int j=1;j<=n;j++) a[i][j]=g[i][j]=0;for(int i=1;i<=m;i++) {scanf("%d%d",&x,&y);g[x][y]=g[y][x]=1;a[x][x]++; a[y][y]++;}for(int i=1;i<=n;i++)for(int j=1;j<=n;j++)a[i][j]-=g[i][j];printf("%.0lf\n",solve());}return 0;
}

View Code

转载于:https://www.cnblogs.com/Achenchen/p/7562637.html

SPOJ HIGH Highways相关推荐

  1. SPOJ 104 Highways(最小生成树计数)

    题目链接:http://www.spoj.pl/problems/HIGH/ 题意:求最小生成树个数. 思路:模板 #include <iostream>#include <cstd ...

  2. SPOJ HIGH Highways ——Matrix-Tree定理 高斯消元

    [题目分析] Matrix-Tree定理+高斯消元 求矩阵行列式的值,就可以得到生成树的个数. 至于证明,可以去看Vflea King(炸树狂魔)的博客 [代码] #include <cmath ...

  3. kuangbin带你飞专题合集

    题目列表 [kuangbin带你飞]专题一 简单搜索 [kuangbin带你飞]专题二 搜索进阶 [kuangbin带你飞]专题三 Dancing Links [kuangbin带你飞]专题四 最短路 ...

  4. 生成树的计数 Matrix-Tree(矩阵树)定理

    信息学竞赛中,有关生成树的最优化问题如最小生成树等是我们经常遇到的,而对生成树的计数及其相关问题则少有涉及.事实上,生成树的计数是十分有意义的,在许多方面都有着广泛的应用.本文从一道信息学竞赛中出现的 ...

  5. 算法学习经典例题整理

    陆续会对本篇博客进行更新! 搜索:https://vjudge.net/contest/292597 区间DP:https://vjudge.net/contest/293892 树状背包:https ...

  6. 基尔霍夫矩阵题目泛做(AD第二轮)

    题目1: SPOJ 2832 题目大意: 求一个矩阵行列式模一个数P后的值.p不一定是质数. 算法讨论: 因为有除法而且p不一定是质数,不一定有逆元,所以我们用辗转相除法. 1 #include &l ...

  7. kuangbin带你飞 专题1-23 题单

    kuangbin大神,对于打过ACM比赛的ACMer,无人不知无人不晓. 在此,附上vjudge平台上一位大神整理的[kuangbin带你飞]专题目录链接. [kuangbin带你飞专题目录1-23] ...

  8. 老鱼的-kuangbin专题题解

    kuangbin专题问题一览 专题一 简单搜索 POJ 1321 棋盘问题 POJ 2251 Dungeon Master POJ 3278 Catch That Cow POJ 3279 Flipt ...

  9. [SPOJ P104]HIGH - Highways(Matrix-Tree定理)

    Description In some countries building highways takes a lot of time- Maybe that's because there are ...

最新文章

  1. 通过Scroller.js制作上拉加载和下拉刷新
  2. windows service自动启动相关设置
  3. C++基础之指向成员的指针
  4. SQL Server 2008 批量插入数据时报错
  5. 去中心化 去区块链_基于区块链的去中心化应用的四种架构模式候选
  6. gdal数据类型_科学网-gdal数据类型的代码的核心定义文件-林清莹的博文
  7. linux把虚拟机上的文件共享,[转]windows中vmware虚拟机中的Linux如何进行文件的共享...
  8. 浅谈C#托管程序中的资源释放问题 (转载)
  9. Clean-Code: 有意义的名字
  10. 步进电机 步进电机驱动器
  11. 【linux】X Server / X Client / Window manager 的关系
  12. .htaccess重写、安全防护、文件访问权限
  13. DWcs4右下角没有html文件,dreamweaver cs4 (dwcs4)安装图文教程
  14. php对接腾讯云直播,聊天,im,云录制产生回放
  15. 骚操作,VSCode上发布知乎
  16. 最好用的文字锁屏APP的使用教程
  17. AI遮天传 DL-回归与分类
  18. python 全栈开发,Day21(抽象类,接口类,多态,鸭子类型)
  19. 李彦宏:没有妻子就没有百度
  20. ​AD设置丝印到阻焊的间距,并分析丝印重叠对阻焊的影响

热门文章

  1. Java成神之路——javaAgent(插桩,attach)
  2. php mysql 代理_让PHP像C罗一样操作MySQL之ProxySQL
  3. 没有找到站点_为了在家Coding,我搜集了海量的远程站点,然而...
  4. Fast-SCNN 多分支结构共享低级特征的语义分割网络 (一)
  5. javascript案例大全_JavaScript 中文资源大全,你值得拥有
  6. 【算法】剑指 Offer 18. 删除链表的节点
  7. 【算法】图的基本介绍 以及 存储方式
  8. 90-20-010-源码-调试-Kylin-2.6.0源码调试
  9. 【ElasticSearch】ElasticSearch immense term错误
  10. 【Flink】Flink反压(背压)网络流控