Loading

代码-HEOI2015 小 Z 的房间

#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef double db;
#define x first
#define y second
#define bg begin()
#define ed end()
#define pb push_back
#define mp make_pair
#define sz(a) int((a).size())
#define R(i,n) for(int i(0);i<(n);++i)
#define L(i,n) for(int i((n)-1);~i;--i)
const int iinf=0x3f3f3f3f;
const ll linf=0x3f3f3f3f3f3f3f3f;

//Data
const int N=81;
int n,m,tn,id[N]; string ma;
vector<pair<int,int>> adj({{-1,0},{0,-1},{0,1},{1,0}});

//Math
const int mod=1e9;
void fmod(int &x){x+=x>>31&mod;}

//Matrix
struct Matrix{
    int mn,a[N][N];
    int* operator[](int i){return a[i];}
    void print(){
        // cout<<"matrix:";
        R(i,mn)R(j,mn) cout<<a[i][j]<<" \n"[mn-j==1];
    }
    int det(int res=1,int j=-1){
        R(i,mn){
            for(j=i;j<mn;j++)if(a[j][i]) break;
            if(j==mn) return 0;
            if(i^j){
                for(int t=i;t<mn;t++) swap(a[i][t],a[j][t]);
                res=-res;
            }
            for(int j=i+1;j<mn;j++)while(a[j][i]){
                int d=a[j][i]/a[i][i];
                for(int t=i;t<mn;t++) fmod(a[j][t]-=1ll*a[i][t]*d%mod);
                if(!a[j][i]) break;
                for(int t=i;t<mn;t++) swap(a[i][t],a[j][t]);
                res=-res;
            }
        }
        fmod(res);
        R(i,mn) res=1ll*res*a[i][i]%mod;
        return res;
    }
}e;

//Main
int main(){
    // freopen("afdas","r",stdin);
    // freopen("odvk","w",stdout);
    ios::sync_with_stdio(0);
    cin.tie(0),cout.tie(0);
    cin>>n>>m;
    R(i,n){
        string str; cin>>str;
        ma+=str;
    }
    R(u,n*m)if(ma[u]=='.') id[u]=tn++;
        else id[u]=-1;
    R(u,n*m)if(~id[u])
        for(pair<int,int> d:adj){
            int vx=u/m+d.x,vy=u%m+d.y,v=vx*m+vy;
            if(vx<0||vx>=n||vy<0||vy>=m||!~id[v]) continue;
            e[id[u]][id[u]]++,e[id[u]][id[v]]--;
        }
    R(i,tn)R(j,tn) fmod(e[i][j]);
    e.mn=tn-1;
    // e.print();
    // cout<<"fuck\n";
    cout<<e.det()<<'\n';
    return 0;
}
posted @ 2020-11-24 13:04  George1123  阅读(48)  评论(0编辑  收藏  举报