分析

[1]无向图

图G的度数矩阵为D,邻接矩阵为A

我们定义这个图的Kirchhoff矩阵为D-A

这个矩阵的任意一个n-1阶主子式的行列式的绝对值就是这个图的生成树个数

[2]有向图

如果要求内向树计数,矩阵是 出度矩阵-邻接矩阵
如果要求外向树计数,矩阵是 入度矩阵-邻接矩阵
注意有向树计数的时候,删除一行一列,必须删除根所在的行列。

对于这个题我们只需要将一个点与周围的非障碍点连边

然后求无向图的生成树个数即可

代码

#include<iostream>
#include<cstdio>
#include<cstring>
#include<string>
#include<algorithm>
#include<cctype>
#include<cmath>
#include<cstdlib>
#include<queue>
#include<ctime>
#include<vector>
#include<set>
#include<map>
#include<stack>
using namespace std;
const int mod = 1e9;
const int dx[] = {,,,-};
const int dy[] = {,-,,};
int n,m,g[][],wh[][],cnt;
char s[][];
inline int gs(){
int i,j,k,ans=;
for(i=;i<=n;i++)
for(j=;j<=n;j++)
g[i][j]=(g[i][j]%mod+mod)%mod;
for(i=;i<=n;i++){
for(j=i;j<=n;j++)
if(g[i][j])break;
if(j>n)return ;
if(j!=i)ans=mod-ans,swap(g[i],g[j]);
for(j=i+;j<=n;j++){
while(g[j][i]){
int t=g[i][i]/g[j][i];
for(k=i;k<=n;k++)
g[i][k]=(g[i][k]-1ll*t*g[j][k]%mod+mod)%mod;
swap(g[i],g[j]);
ans=mod-ans;
}
}
ans=1ll*ans*g[i][i]%mod;
}
return ans;
}
int main(){
int i,j,k;
scanf("%d%d",&n,&m);
for(i=;i<=n;i++){
scanf("%s",s[i]+);
for(j=;j<=m;j++)
if(s[i][j]=='.')
wh[i][j]=++cnt;
}
for(i=;i<=n;i++)
for(j=;j<=m;j++){
if(!wh[i][j])continue;
for(k=;k<;k++)
if(wh[i+dx[k]][j+dy[k]]){
int id=wh[i][j];
g[id][id]++;
g[id][wh[i+dx[k]][j+dy[k]]]--;
}
}
n=cnt-;
printf("%d\n",gs());
return ;
}

最新文章

  1. Nginx if 条件判断
  2. (总结)隐藏PHP版本与PHP基本安全设置
  3. 让textarea完全显示文章并且不滚动、不可拖拽、不可编辑
  4. Binary Tree Preorder Traversal -- LEETCODE 144
  5. 准备再次开始更新文章,做了10年.net,有项目需要转java
  6. MyBatis入门学习教程-使用MyBatis对表执行CRUD操作
  7. sshd_conf AllowUsers参数
  8. Codeforces Round #254 (Div. 1) C. DZY Loves Colors 线段树
  9. mmsql 查询每个分类的前3条数据
  10. 昂贵的聘礼--POJ1062
  11. BZOJ3400: [Usaco2009 Mar]Cow Frisbee Team 奶牛沙盘队
  12. Xshell 4的上传与下载
  13. 简单的nodejs 文件系统(fs)读写例子。
  14. Java 标记接口
  15. MySQL模糊匹配查询like、regexp、in
  16. Anaconda的下载与安装
  17. 并发编程之I/O模型
  18. Golang 反射reflection
  19. 【官方文档】Nginx模块Nginx-Rtmp-Module学习笔记(一) RTMP 命令详解
  20. ELK 实现 Java 分布式系统日志分析架构

热门文章

  1. idea 2017 快捷键
  2. nginx--&gt;基本使用
  3. oracle--登陆用户机制
  4. Linked List Cycle(链表成环)
  5. [2019杭电多校第一场][hdu6579]Operation(线性基)
  6. Python所有转义字符总汇
  7. hdu 3333 离线线段树 + 思维/树状数组 /在线主席树
  8. Elasticsearch7.X 入门学习第三课笔记----search api学习(URI Search)
  9. 处理键盘事件 禁止后退键(Backspace)密码或单行、多行文本框除外
  10. Linux安装软件-CentOS和Ubuntu介绍