P4111 HEOI2015 小Z的房間

2022-03-03 22:37:50 字數 866 閱讀 9496

你的房子可以看做是乙個包含n*m個格仔的格狀矩形,每個格仔是乙個房間或者是乙個柱子。在一開始的時候,相鄰的格仔之間都有牆隔著。

你想要打通一些相鄰房間的牆,使得所有房間能夠互相到達。在此過程中,你不能把房子給打穿,或者打通柱子(以及柱子旁邊的牆)。同時,你不希望在房子中有小偷的時候會很難抓,所以你希望任意兩個房間之間都只有一條通路。現在,你希望統計一共有多少種可行的方案。

矩陣樹求生成樹個數模板題

度數矩陣-鄰接矩陣=拉普拉斯矩陣

求拉普拉斯矩陣的任意乙個代數余子數即可

#define int long long//

記住這個騷操作!!!int->longlong範圍懶得手動改。但是記得int main要寫成signed main

#define mod 1000000000

inttot;

int dx[4] = ;

int dy[4] = ;

intf[n][n];

char

mp[n][n];

intn, m;

intid[n][n];

int num = 0

;int

gauss()

ans = (ans * f[i][i]) %mod;

} return (ans + mod) %mod;

}signed main()

} for(x,

1, n)

for(y,

1, m)

for(k,

0, 3)

} printf(

"%lld\n

", gauss());

return0;

}

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 的矩陣,並且滿足...

HEOI2015 小Z的房間

其實是矩陣樹定理模板題。但是要注意不合法的情況預處理的時候設定成0,要不然計算行列式的時候有問題。直接跳過不合法情況,不給它建立新點就行了。如下 include include include include define mod 1000000000 using namespace std int...

HEOI2015 BZOJ4031 小Z的房間

description 你突然有了乙個大房子,房子裡面有一些房間。事實上,你的房子可以看做是乙個包含n m個格仔的格狀矩形,每個格仔是乙個房間或者是乙個柱子。在一開始的時候,相鄰的格仔之間都有牆隔著。你想要打通一些相鄰房間的牆,使得所有房間能夠互相到達。在此過程中,你不能把房子給打穿,或者打通柱子 ...