线性代数?图论!
行列式
咕
LGV引理
咕
矩阵树定理
Laplace矩阵
定义Laplace矩阵
定理
定理1(无向图行列式形式)
对于任意的
Laplace矩阵所有n-1阶主子式都相等。
小Z的房间
#include<bits/stdc++.h>
using namespace std;
const int MAX=100;
const int mod=1e9;
#define int long long
int n,m,f[MAX][MAX],tot,id[MAX][MAX];string s[MAX];
inline int read(){
int x=0,f=1;char c=getchar();
while(c>'9'||c<'0'){if(c=='-')f=-1;c=getchar();}
while(c<='9'&&c>='0'){x=(x<<3)+(x<<1)+(c^48);c=getchar();}
return x*f;
}
inline int GAUSS(int n){
int res=1;
for(int i=1;i<=n;++i){
for(int j=i+1;j<=n;++j){
while(f[i][i]){
int t=f[j][i]/f[i][i];
for(int k=i;k<=n;++k)
f[j][k]=(f[j][k]-f[i][k]*t%mod+mod)%mod;
swap(f[i],f[j]);res=-res;
}swap(f[i],f[j]);res=-res;
}res=res*f[i][i]%mod;
}return (res+mod)%mod;
}
signed main(){
n=read();m=read();
for(int i=1;i<=n;++i) cin>>s[i],s[i]=" "+s[i];
for(int i=1;i<=n;++i)
for(int j=1;j<=m;++j)
if(s[i][j]=='.') id[i][j]=++tot;
for(int i=1;i<=n;++i)
for(int j=1;j<=m;++j)
if(s[i][j]=='.'){
int p=id[i][j];
if(s[i-1][j]=='.') f[p][p]++,f[p][id[i-1][j]]--;
if(s[i][j-1]=='.') f[p][p]++,f[p][id[i][j-1]]--;
if(s[i+1][j]=='.') f[p][p]++,f[p][id[i+1][j]]--;
if(s[i][j+1]=='.') f[p][p]++,f[p][id[i][j+1]]--;
}
printf("%lld",GAUSS(tot-1));
}
定理2(有向图内向形式)
对于任意的
图的所有内向树为
定理3(有向图外向形式)
对于任意的
定理4(BEST定理)
设G是有向欧拉图,G的不同欧拉回路总数
对于G的任意节点,
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律