题目分析:

  这题是一道板题,属于MatrixTree定理的简单拓展,邻接矩阵与有向图邻接矩阵一致,度数矩阵作为入度矩阵。然后高斯消元即可。

代码:

  

  1. #include<bits/stdc++.h>
  2. using namespace std;
  3.  
  4. const int mod = ;
  5.  
  6. int n,m,ans;
  7. int g[][];
  8. int dr[][];
  9.  
  10. void read(){
  11. scanf("%d%d",&n,&m);
  12. for(int i=;i<=m;i++){
  13. int u,v; scanf("%d%d",&u,&v);
  14. g[v][u]++;
  15. dr[u][u]++;
  16. }
  17. }
  18.  
  19. void BuildMatrix(){
  20. for(int i=;i<=n;i++)
  21. for(int j=;j<=n;j++)dr[i][j]=(dr[i][j]-g[i][j]+mod)%mod;
  22. }
  23.  
  24. int fast_pow(int now,int p){
  25. int nowp = now,ans = ,mov = ;
  26. while(mov <= p){
  27. if(mov & p){ans = (1ll*ans*nowp)%mod;}
  28. mov<<=,nowp = (1ll*nowp*nowp)%mod;
  29. }
  30. return ans;
  31. }
  32.  
  33. void Gauss(){
  34. int pp = ;
  35. for(int i=;i<n;i++){
  36. int im = ;
  37. for(int j=i;j<=n;j++){
  38. if(dr[j][i]) im = j;
  39. }
  40. if(!im) return;
  41. if(im != i){pp*=-;for(int j=i;j<=n;j++) swap(dr[i][j],dr[im][j]);}
  42. for(int j=i+;j<=n;j++){
  43. int bl = (dr[j][i]*fast_pow(dr[i][i],mod-))%mod;
  44. for(int k=i;k<=n;k++){
  45. dr[j][k] -= bl*dr[i][k];
  46. dr[j][k] %= mod;dr[j][k] += mod; dr[j][k] %=mod;
  47. }
  48. }
  49. }
  50. ans = ;
  51. for(int i=;i<=n;i++){
  52. ans = (ans*dr[i][i])%mod;
  53. }
  54. if(pp == -){ans = mod-ans;}
  55. }
  56.  
  57. void work(){
  58. BuildMatrix();
  59. Gauss();
  60. printf("%d",ans);
  61. }
  62.  
  63. int main(){
  64. read();
  65. work();
  66. return ;
  67. }

BZOJ5297 [CQOI2018] 交互网络 【MatrixTree定理】的更多相关文章

  1. BZOJ5297 CQOI2018 社交网络 【矩阵树定理Matrix-Tree】

    BZOJ5297 CQOI2018 社交网络 Description 当今社会,在社交网络上看朋友的消息已经成为许多人生活的一部分.通常,一个用户在社交网络上发布一条消息(例如微博.状态.Tweet等 ...

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

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

  3. BZOJ 4031: [HEOI2015]小Z的房间 Matrix-Tree定理

    题目链接: http://www.lydsy.com/JudgeOnline/problem.php?id=4031 题解: Matrix-tree定理解决生成树计数问题,其中用到高斯消元法求上三角矩 ...

  4. 康复计划#5 Matrix-Tree定理(生成树计数)的另类证明和简单拓展

    本篇口胡写给我自己这样的什么都乱证一通的口胡选手 以及那些刚学Matrix-Tree,大致理解了常见的证明但还想看看有什么简单拓展的人- 大概讲一下我自己对Matrix-Tree定理的一些理解.常见版 ...

  5. 矩阵树Matrix-Tree定理与行列式

    简单入门一下矩阵树Matrix-Tree定理.(本篇目不涉及矩阵树相关证明) 一些定义与定理 对于一个无向图 G ,它的生成树个数等于其基尔霍夫Kirchhoff矩阵任何一个N-1阶主子式的行列式的绝 ...

  6. Matrix-tree 定理的一些整理

    \(Matrix-tree\) 定理用来解决一类生成树计数问题,以下前置知识内容均是先基于无向无权图来介绍的.有关代数余子式的部分不是很明白,如果有错误还请指出-- 部分内容参考至:\(Blog\_1 ...

  7. 洛谷P3317 [SDOI2014]重建 [Matrix-Tree定理]

    传送门 思路 相信很多人像我一样想直接搞Matrix-Tree定理,而且还过了样例,然后交上去一分没有. 但不管怎样这还是对我们的思路有一定启发的. 用Matrix-Tree定理搞,求出的答案是 \[ ...

  8. 洛谷P4336 [SHOI2016]黑暗前的幻想乡 [Matrix-Tree定理,容斥]

    传送门 思路 首先看到生成树计数,想到Matrix-Tree定理. 然而,这题显然是不能Matrix-Tree定理硬上的,因为还有每个公司只能建一条路的限制.这个限制比较恶心,尝试去除它. 怎么除掉它 ...

  9. Matrix-tree定理 spoj HIGH

    Matrix-tree定理,给出一个无向图,问求出的生成树方案有多少种方案,利用Matrix-tree定理,主对角线第i行是i的度数,(i,j) 值为i和j之间边的数量,然后删去第一行第一列,利用初等 ...

随机推荐

  1. Emacs 番茄钟 pomidor

    Windows 10 pomidor:https://github.com/TatriX/pomidor alert :https://github.com/jwiegley/alert toaste ...

  2. AtCoder ExaWizards 2019 简要题解

    AtCoder ExaWizards 2019 简要题解 Tags:题解 link:https://atcoder.jp/contests/exawizards2019 很水的一场ARC啊,随随便便就 ...

  3. OpenGL学习(1)——创建窗口

    这是我的第一篇博客,试着记录学习OpenGL的过程.使用的教程:LearnOpenGL,系统:Deepin 15.9.3,IDE:Qt Creator. 添加头文件 创建窗口用到两个库:GLFW和GL ...

  4. ansible一键部署k8s单机环境

    一.虚拟机准备 干净的Centsot7.4.4G内存.2个CPU 最小化安装,最好带虚拟化 二.执行初始化脚本 注意:脚本中配置静态网卡根据实际网卡名称配置,我用的是ens33 可以用 sed -i ...

  5. 解决Jira和Confluence访问打开越来越缓慢问题

    Jira和Confluence部署在同一台服务器上,跑一段时间后,发现访问jira和confluence时,打开越来越缓慢.这是因为根据主机物理内存不同,默认的java虚拟机内存也会不同(一个较低值) ...

  6. Zookeeper 3.4.8分布式安装

    1.机器信息 五台centos 64位机器 2.集群规划 Server Name Hadoop Cluster Zookeeper   Ensemble HBase Cluster Hadoop01 ...

  7. Maven入门系列(一):Eclipse中使用Maven

    Maven下载和安装 在使用Maven之前首先先要下载Mavne的免安装包,下载地址:http://maven.apache.org/download.cgi 想看源码的可以下载src版本,使用的下载 ...

  8. js/jquery禁止页面回退

    $(function() { //防止页面后退 history.pushState(null, null, document.URL); window.addEventListener('popsta ...

  9. Neo4j学习案例【转】

    转自 打怪的蚂蚁 CSDN: https://blog.csdn.net/xgjianstart/article/details/77285334 neo4j有社区版本和企业版.社区版本是免费的,只支 ...

  10. Building Java Projects with Gradle

    https://spring.io/guides/gs/gradle/ Gradle学习系列教程 https://blog.csdn.net/column/details/gradle-transla ...