[HEOI2015] 小Z的房间 - 矩阵树定理

[HEOI2015] 小Z的房间 - 矩阵树定理_第1张图片

#include 
using namespace std;
#define int long long
const int N = 105;
const int mod = 1e+9;
namespace mat {
int a[N][N];
int n,p=1;
int Gauss() {
    int ans = 1;
    for(int i = 1; i < n; i ++) {
        for(int j = i + 1; j < n; j ++)
            while(a[j][i]) {
                int t = a[i][i] / a[j][i];
                for(int k = i; k < n; k ++)
                    a[i][k] = (a[i][k] - t * a[j][k] + mod) % mod;
                swap(a[i], a[j]);
                ans = - ans;
            }
        ans = (ans * a[i][i]) % mod;
    }
    return (ans + mod) % mod;
}
} // namespace mat

int a[N][N],d[N][N],b[N][N],c[N][N],n,m,ind;
char str[N];

int id(int i,int j) {
    return c[i][j];
}

int add(int p,int q) {
    a[p][q]=a[q][p]=1;
    d[p][p]++;
    d[q][q]++;
}

signed main() {
    ios::sync_with_stdio(false);
    cin>>n>>m;
    for(int i=1; i<=n; i++) {
        cin>>str+1;
        for(int j=1; j<=m; j++) {
            if(str[j]=='.') b[i][j]=0, c[i][j]=++ind;
            else b[i][j]=1;
        }
    }
    for(int i=1; i<=n; i++) {
        for(int j=1; j<=m; j++) {
            if(b[i][j]==0) {
                if(i

你可能感兴趣的:([HEOI2015] 小Z的房间 - 矩阵树定理)