矩陣樹定理--luoguP4208 [JSOI2008]最小生成樹計數
以前用 做的,用基爾霍夫矩陣真的玄啊
首先這道題有這麼幾個定理:(來自Z-Y-Y-S的部落格)
定理一:如果
同為
的最小生成樹,且
的邊權從小到大為
,
的邊權從小到大為
,則有
。
證明:設
第一個不同的邊的下標為
,不妨設
,如果不存在這樣的
,無需證明。
情況一:
在
中,為
。那麼顯然有
(否則
不是第一個不同的邊),則有
,所以有
,所以可以調換
的位置,
的權值排列不會改變,
與
這樣前
條邊均為相等,可以遞迴下去證明。
情況二:
不在
中。考慮將
加入
,則形成了一個環,環中的權值
(否則
不是最小生成樹),且一定有一條邊
不在
中,此時仍有
(否則
不是第一個不同的邊),所以有
,所以仍有
,可以將
替換為
,
的權值排列不會改變且仍為最小生成樹,仍然調換
的位置,
的權值排列仍會改變,這樣
與
前
條邊均為相等,可以遞迴下去證明。這樣換邊不會有問題,因為 Kruskal 演算法中唯一的狀態就是連通性,我們沒有改變其連通性,所以是可以遞迴證明的。
定理二:如果 同為 的最小生成樹,如果 都從零開始從小到大加邊( 加 的邊,