筆記 矩陣樹定理

2022-10-11 17:45:12 字數 1047 閱讀 7098

考慮構建拉普拉斯矩陣:

\[l(i,j)=\left\

-m(i,j)(i\ne j) \\

deg(i,j)(i=j) \\

\end

\right.

\]在去某一行和列後 \(det(l)\) 即為答案。

證明略(後面有時間會補)。

模板:p4111

行列式即為變換為上三角矩陣後對角線上的乘積,所以高斯消元即可。

但是這道垃圾題模數不是質數,我們通過輾轉相除即可。

複雜度 \(\tilde((nm)^3)\)。

#include using namespace std;

typedef long long ll;

const ll mod = 1e9;

int n, m, num, id[11][11];

char s[11];

ll l[101][101];

int dx[4] = , dy[4] = ;

ll gauss()

swap(l[i], l[j]);

ret = -ret;

}} ret = ret * l[i][i] % mod;

ret = (ret + mod) % mod;

} return ret;

}int main()

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

} }cout << gauss() << "\n";

return 0;

}

重新定義拉普拉斯矩陣:

\[l(i,j)=\left\

-m(i,j)(i\ne j) \\

out(i)(i=j) \\

\end

\right.

\]重新定義拉普拉斯矩陣:

\[l(i,j)=\left\

-m(i,j)(i\ne j) \\

in(i)(i=j) \\

\end

\right.

\]注意有向圖定根必須去掉根的那行和那列。

學習筆記 矩陣樹定理

因為在臨時抱佛腳,所以是沒有證明的 對於行列式 d 任意第 i 行 列同理 按下式展開的值與行列式值相等 text sum n 1 cdot a cdot m 其中 m 是 a 的余子式。一些閒話 這個可以用來推導 輪狀病毒 一題中的遞推式。構造連通矩陣和度數矩陣。連通矩陣 a 的第 i 行第 j ...

矩陣樹定理

構建基爾霍夫矩陣,基爾霍夫矩陣的任意乙個代數余子式是所有生成樹的邊權積的和,也就是求的是 sum limits t prod limits v e 基爾霍夫矩陣為度數矩陣減去鄰接矩陣 任意去掉一行一列,所得到的矩陣的行列式即為所求 外向樹為入度矩陣減去鄰接矩陣 內向樹出度矩陣減去鄰接矩陣 刪去根所在...

矩陣樹定理

includeusing namespace std const int n 505 const long long mod 1e4 7 long long det long long a n n int n 0 n 1 求行列式的值 long long tmp 1 for int i 0 i n ...