栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

矩阵树+生成树计数

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

矩阵树+生成树计数

矩阵树+生成树计数

小Z的房间
注意使用夕哥哥板子的时候点id从0开始计数
或者改板子w

#include
//#include
//#include
#define ll long long
#define mes(a,b) memset(a,b,sizeof(a))
#define ctn continue
#define ull unsigned long long
//#pragma warning(disable:4996)
#define tgg cout<<"---------------"<> n >> m;
	mes(D, 0);
	mes(A, 0);
	for (int i = 0; i < n; i++) {
		cin >> mp[i];
	}
	int lab = 0;
	int dx[] = { 1, 0 }, dy[] = { 0, 1 };
	for (int i = 0; i < n; i++) {
		for (int j = 0; j < m; j++) {
			if (mp[i][j] == '.') {
				id[i][j] = lab;
				++lab;
			}
		}
	}
	for (int i = 0; i < n; i++) {
		for (int j = 0; j < m; j++) {
			if (mp[i][j] == '.') {
				int now = id[i][j];
				for (int k = 0; k < 2; k++) {
					int ax = i + dx[k];
					int bx = j + dy[k];
					if (ax<0 || bx<0 || ax>=n || bx>=m || mp[ax][bx] != '.') ctn;
					int nxt = id[i + dx[k]][j + dy[k]];
					++A[now][nxt];
					++A[nxt][now];
					++D[now][now];
					++D[nxt][nxt];
				}
			}
		}
	}
	mat.init(lab);
	ll ans = mat.det(lab - 1);
	cout << ans << endl;
	return 0;
}


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/529308.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号