ural 1627 生成树计数模板题 基尔霍夫矩阵树定理 + 行列式计算模板
发布日期:2021-05-06 15:24:59 浏览次数:10 分类:技术文章

本文共 2124 字,大约阅读时间需要 7 分钟。

题意:n*m的字符矩阵,'.'代表卧室,'*'代表厨房。卧室与卧室之间有一扇门,要求任意两个卧室之间只有一条路。求路的总数。

题解:生成树计数模板题

无向图的基尔霍夫矩阵: 对角线上表示每个点的度数,若ij之间有边则矩阵ij处为-1。其他ij的值为0。

无向图的生成树的数目为: 任意一个n-1阶主子式的行列式的绝对值。(下面是模板)

1.模板题,这个可以转化为生成树计数,遇到求无向图的生成树个数,直接套用这个模板就ok。

#include 
#include
#include
#define MOD 1000000000using namespace std;int cnt = 0 ;int index[15][15] ;int row[4] = {0 , 0 , -1 , 1} ;int col[4] = {-1 , 1 , 0 , 0} ;bool A[105][105] ;long long B[105][105] ;long long det(int n) //计算n-1阶行列式 { int i , j , k ; long long t , ans = 1 ; for(i = 0 ; i < n ; i ++) { for(j = i + 1 ; j < n ; j ++) { while(B[j][i]) { t = B[i][i] / B[j][i]; for(k = i ; k < n ; k ++) { B[i][k] = (B[i][k] - B[j][k] * t % MOD + MOD) % MOD ; swap(B[i][k] , B[j][k]) ; } ans = -ans ; } } if(!B[i][i]) return 0; ans = ans * B[i][i] % MOD ; } return (ans + MOD) % MOD ; } int main(){ int i , j , k ; int n , m ; int begin , end ; long long ans ; int x , y ; char map1[15][15] ; scanf("%d%d", &n, &m) ; memset(index , -1 , sizeof(index)); memset(A , 0 , sizeof(A)); memset(B , 0 , sizeof(B)); for(i = 0 ; i < n ; i ++) scanf("%s" , map1[i]) ; for(i = 0 ; i < n ; i ++) for(j = 0 ; j < m ; j ++) if(map1[i][j] == '.') index[i][j] = cnt ++ ; for(i = 0 ; i < n ; i ++) for(j = 0 ; j < m ; j ++) { if(map1[i][j] == '*') continue ; for(k = 0 ; k < 4 ; k ++) { x = i + row[k] ; y = j + col[k] ; if(x < 0 || x >= n || y < 0 || y >= m) continue ; if(map1[x][y] == '*') continue ; begin = index[i][j] ; end = index[x][y] ; A[begin][end] = 1 ; } } for(i = 0 ; i < cnt ; i ++) for(j = 0 ; j < cnt ; j ++) if(i != j && A[i][j]) { B[i][i] ++ ; B[i][j] = -1 ; } ans = det(cnt - 1) ; printf("%lld\n", ans); return 0;}

 

上一篇:hdu 2444 判断二分图模板(染色法) + 求最大匹配数模板(匈牙利算法)
下一篇:hdu 4009 不定根最小树形图模板题 朱刘算法 + 虚根 + 环数的确定

发表评论

最新留言

能坚持,总会有不一样的收获!
[***.219.124.196]2025年03月15日 19时10分34秒

关于作者

    喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!

推荐文章

2020年保育员(初级)考试资料及保育员(初级)新版试题 2019-03-03
2020年茶艺师(高级)考试内容及茶艺师(高级)考试申请表 2019-03-03
2021年烟花爆竹经营单位安全管理人员考试及烟花爆竹经营单位安全管理人员考试试卷 2019-03-03
2021年过氧化工艺试题及答案及过氧化工艺考试平台 2019-03-03
2021年重氮化工艺考试题库及重氮化工艺考试报名 2019-03-03
2021年车工(高级)考试总结及车工(高级)试题及答案 2019-03-03
2021年压力焊证考试及压力焊实操考试视频 2019-03-03
2021年低压电工考试及低压电工考试申请表 2019-03-03
2021年低压电工考试及低压电工考试申请表 2019-03-03
2021年A特种设备相关管理(电梯)考试APP及A特种设备相关管理(电梯)复审考试 2019-03-03
2021年美容师(初级)考试报名及美容师(初级)新版试题 2019-03-03
2021年N1叉车司机考试题及N1叉车司机复审模拟考试 2019-03-03
2021年危险化学品经营单位主要负责人考试APP及危险化学品经营单位主要负责人多少钱 2019-03-03
2021年T电梯修理考试技巧及T电梯修理模拟考试软件 2019-03-03
2021年电工(初级)考试及电工(初级)报名考试 2019-03-03
2021年R2移动式压力容器充装考试题及R2移动式压力容器充装找答案 2019-03-03
2021年高处安装、维护、拆除考试资料及高处安装、维护、拆除证考试 2019-03-03
2021年电工(初级)考试及电工(初级)证考试 2019-03-03
2021年安全员-B证-项目负责人(广东省)新版试题及安全员-B证-项目负责人(广东省)考试试卷 2019-03-03
2021年R2移动式压力容器充装考试总结及R2移动式压力容器充装模拟考试 2019-03-03