【题目链接】 http://www.lydsy.com/JudgeOnline/problem.php?id=4031

【题目大意】

  你突然有了一个大房子,房子里面有一些房间。
  事实上,你的房子可以看做是一个包含n*m个格子的格状矩形,
  每个格子是一个房间或者是一个柱子。在一开始的时候,相邻的格子之间都有墙隔着。
  你想要打通一些相邻房间的墙,使得所有房间能够互相到达。
  在此过程中,你不能把房子给打穿,或者打通柱子(以及柱子旁边的墙)。
  同时,你不希望在房子中有小偷的时候会很难抓,
  所以你希望任意两个房间之间都只有一条通路。现在,你希望统计一共有多少种可行的方案。

【题解】

  根据任意两个房间之间只有一条通路我们可以知道这题要求的是生成树的方案数,
  那么我们先求出这个图的基尔霍夫矩阵,然后求余子式就是答案,处理一下取模即可。

【代码】

#include <cstdio>
#include <algorithm>
using namespace std;
typedef long long LL;
#define rep(i,n,m) for(int i=n;i<=m;i++)
const LL mod=1000000000;
int dx[]={0,0,1,-1},dy[]={1,-1,0,0};
int n,m,id;
char mp[110][110];
LL a[110][110],p[110][110];
int det(int n){
LL ans=1,f=1;
rep(i,1,n)rep(j,1,n)a[i][j]=(a[i][j]+mod)%mod;
rep(i,1,n){
rep(j,i+1,n){
LL A=a[i][i],B=a[j][i];
while(B!=0){
LL t=A/B; A%=B; swap(A,B);
for(int k=1;k<=n;k++)a[i][k]=(a[i][k]-t*a[j][k]%mod+mod)%mod;
for(int k=1;k<=n;k++)swap(a[i][k],a[j][k]);
f=-f;
}
}if(!a[i][i])return 0;
ans=ans*a[i][i]%mod;
}if(f==-1)return (mod-ans)%mod;
return ans;
}
bool check(int x,int y){if(x<1||y<1||x>n||y>m||mp[x][y]!='.')return 0;return 1;}
int main(){
scanf("%d%d",&n,&m);
rep(i,1,n)scanf("%s",mp[i]+1);
rep(i,1,n)rep(j,1,m)if(mp[i][j]=='.')p[i][j]=++id;
rep(i,1,n)rep(j,1,m)if(mp[i][j]=='.'){
rep(k,0,4){
int x=i+dx[k],y=j+dy[k];
if(check(x,y)){int u=p[i][j],v=p[x][y];a[u][u]++;a[u][v]--;}
}
}printf("%d\n",det(id-1));
return 0;
}

BZOJ 4031 [HEOI2015]小Z的房间(Matrix-Tree定理)的更多相关文章

  1. BZOJ.4031.[HEOI2015]小Z的房间(Matrix Tree定理 辗转相除)

    题目链接 辗转相除解行列式的具体实现? 行列式的基本性质. //864kb 64ms //裸的Matrix Tree定理.练习一下用辗转相除解行列式.(因为模数不是质数,所以不能直接乘逆元来高斯消元. ...

  2. BZOJ 4031: [HEOI2015]小Z的房间(Matrix Tree)

    传送门 解题思路 矩阵树定理模板题.矩阵树定理是求图中最小生成树个数,做法是首先求出基尔霍夫矩阵,就是度数矩阵\(-\)邻接矩阵.然后再求出这个矩阵的行列式,行列式的求法就是任意去掉一行一列,然后高斯 ...

  3. BZOJ 4031: [HEOI2015]小Z的房间 [矩阵树定理 行列式取模]

    http://www.lydsy.com/JudgeOnline/problem.php?id=4031 裸题........ 问题在于模数是$10^9$ 我们发现消元的目的是让一个地方为0 辗转相除 ...

  4. BZOJ 4031: [HEOI2015]小Z的房间 (矩阵树定理 板题)

    背结论 : 度-邻 CODE1 O(n3logn)O(n^3logn)O(n3logn) #include <bits/stdc++.h> using namespace std; typ ...

  5. bzoj 4031: [HEOI2015]小Z的房间 轮廓线dp

    4031: [HEOI2015]小Z的房间 Time Limit: 10 Sec  Memory Limit: 256 MBSubmit: 98  Solved: 29[Submit][Status] ...

  6. BZOJ 4031: [HEOI2015]小Z的房间 高斯消元 MartixTree定理 辗转相除法

    4031: [HEOI2015]小Z的房间 题目连接: http://www.lydsy.com/JudgeOnline/problem.php?id=4031 Description 你突然有了一个 ...

  7. 【刷题】BZOJ 4031 [HEOI2015]小Z的房间

    Description 你突然有了一个大房子,房子里面有一些房间.事实上,你的房子可以看做是一个包含n*m个格子的格状矩形,每个格子是一个房间或者是一个柱子.在一开始的时候,相邻的格子之间都有墙隔着. ...

  8. BZOJ 4031 HEOI2015 小Z的房间 基尔霍夫矩阵+行列式+高斯消元 (附带行列式小结)

    原题链接:http://www.lydsy.com/JudgeOnline/problem.php?id=4031 Description 你突然有了一个大房子,房子里面有一些房间.事实上,你的房子可 ...

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

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

随机推荐

  1. java servlet jsp 导入boostrap css js

    1.在导入boostrap.css的时候注意了 一定要注意路径,你知道把js和css包放在servlet服务器的静态路径下面就是 lib 文件夹路径下,直接使用 lib/js/boostrap.css ...

  2. 双关键字LIS

    首先对于双关键字的LIS有一个比较暴力的方法,就是线段树套平衡树,我们把双关键字的LIS抽象成二维坐标系中的点,这样我们对于当前转移的点i(x,y),需要找的就是在(xx,yy)xx<x,yy& ...

  3. vue-cli proxyTable中跨域中pathRewrite 怎么用

    问:proxyTable 里面的pathRewrite里面的‘^/iclient’:'' 什么意思? 答:用代理, 首先你得有一个标识, 告诉他你这个连接要用代理. 不然的话, 可能你的 html, ...

  4. nsa工程式(fb.py): perl6调用并修改IP

    use v6; if (@*ARGS != 1) {say 'Use:scan.p6 ip';exit;} my $check_ip = @*ARGS[0]; $check_ip = '<val ...

  5. Vue组件-组件的属性

    在html中使用元素,会有一些属性,如class,id,还可以绑定事件,自定义组件也是可以的.当在一个组件中,使用了其他自定义组件时,就会利用子组件的属性和事件来和父组件进行数据交流. 比如,子组件需 ...

  6. java===java基础学习(3)---数据类型转换,运算符级别,枚举类型

    数据类型转换: 有的时候,程序需要将数据类型,比如 int + float ,结果是float, 这里的int就被转换为float类型,属于合法转换. Java中的合法转换如下图: 红色表示无信息丢失 ...

  7. c#使用selenium+Chromedriver参数配置

    using System; //添加selenium的引用 using OpenQA.Selenium.PhantomJS; using OpenQA.Selenium.Chrome; using O ...

  8. [ Python ] 基本数据类型及属性(上篇)

    1. 基本数据类型 (1) 数字 - int        (2) 字符串 - str        (3) 布尔值 - bool 2. int 类型中重要的方法 (1) int      将字符串转 ...

  9. [ python ] 查询数据库生成Excel并发送邮件

    开发要求: 由于管理后台导出数据非常缓慢,找程序员解决无果后,自己动手写了一个脚本,每天定时将报表发送给业务部门. 1. 通过条件查询MySQL获取数据       2. 将获取的数据写入到Excel ...

  10. windows server 2012 IIS配置之FTP站点

    原文地址:[原创]winserver2012IIS配置之FTP站点作者:hkmysterious   一.实验拓扑: 使server2012客户计算机通过ftp方式从FTP服务器上下载已上传并共享的文 ...