HEOI2015 小Z的房間

2022-03-03 17:51:26 字數 757 閱讀 3937

其實是矩陣樹定理模板題。

但是要注意不合法的情況預處理的時候設定成0,要不然計算行列式的時候有問題。直接跳過不合法情況,不給它建立新點就行了。

**如下:

#include#include#include#include#define mod 1000000000

using namespace std;

int n,m,cnt;

long long ans=1;

char cur[20][20];

int d[110][110],a[110][110],c[110][110],trans[20][20];

int main()

for(int i=1;i<=n;i++)

for(int j=1;j<=m;j++)

if(cur[i][j]=='.')

n=cnt;

for(int i=1;i<=n;i++)

for(int j=1;j<=n;j++)

c[i][j]=d[i][j]-a[i][j];

for(int i=2;i<=n;i++)

for(int j=i+1;j<=n;j++)

while(c[j][i])

for(int i=2;i<=n;i++)

ans=1ll*ans*c[i][i]%mod;

printf("%lld\n",(ans+mod)%mod);

return 0;

}

矩陣樹定理 HEOI2015 小Z的房間

傳送門 矩陣樹定理 一張圖的基爾霍夫矩陣即為其度數矩陣 鄰接矩陣,度數矩陣中d i i d i i d i i 為點i的度 一張圖的生成樹個數即為其基爾霍夫矩陣的行列式 code include define int long long define n 90 define mod 10000000...

P4111 HEOI2015 小Z的房間

你的房子可以看做是乙個包含n m個格仔的格狀矩形,每個格仔是乙個房間或者是乙個柱子。在一開始的時候,相鄰的格仔之間都有牆隔著。你想要打通一些相鄰房間的牆,使得所有房間能夠互相到達。在此過程中,你不能把房子給打穿,或者打通柱子 以及柱子旁邊的牆 同時,你不希望在房子中有小偷的時候會很難抓,所以你希望任...

P4111 HEOI2015 小Z的房間

傳送門 轉換題意後就是問你生成樹的方案數 就是裸的矩陣樹定理 不會證明,只懂結論 對於乙個無向圖 g 定義g的度數矩陣 d g 是乙個 n n 的矩陣,並且滿足 當 i j 時,d i j 0,當 i j 時,d i j 等於 vi 的度數 定義g的鄰接矩陣 a g 是乙個 n n 的矩陣,並且滿足...