生成樹計數

2022-03-26 07:31:17 字數 1062 閱讀 4252

考慮簡單帶權無向圖的情況。

約定這張圖為\(g=(v,e),n=|v|,m=|e|\),\(e_i=(u_i,v_i,w_i)\)表示第\(i\)條邊,\(deg_u\)表示\(u\)所連邊的邊權和。

\(\mathbf a_\)滿足\(\mathbf a_=w(i,j)\)

\(\mathbf d_\)滿足\(\mathbf d_=[i=j]deg_i\)

\(\mathbf b_\)滿足\(\mathbf b_=[u_j=i\vee v_j=i](-1)^\sqrt\)

一張圖的laplace矩陣\(\mathbf l=\mathbf d-\mathbf a\)。

\(1.\det(\mathbf l)=0\)

\(2.\operatorname(\mathbf l)=n-1\)

\(3.\mathbf l\)的所有\(c_\)都相等,且等於\(\mathbf l\)的\(\prod\limits_^\lambda_i\)。

\(3.\mathbf b^\mathbf b=\mathbf l\)

一棵生成樹的權值為邊權之積,所有生成樹的權值和就是\(\mathbf l\)的任意乙個\(c_\)。

對於重邊,考慮分配率,發現可以將重邊縮成一條,邊權求和即可。

可以發現cayley定理就是kirchhoff定理的特例。

考慮擴充套件至有向圖的樹形圖。

假如我們要求的是外向樹。

修改:\(deg_i\)表示\(i\)的入邊的邊權和。

那麼此時以\(i\)為根的所有外向樹的權值和為\(\mathbf l\)的\(c_\)。

假如我們要求的是內向樹。

修改:\(deg_i\)表示\(i\)的入邊的邊權和。

那麼此時以\(i\)為根的所有外向樹的權值和為\(\mathbf l\)的\(c_\)。

其實內向樹和外向樹就是把邊反向的區別。

因為把邊反向相當於把\(\mathbf l\)轉置,這並不會讓它的某個\(c_\)發生變化。

所以我們可以不需要修改\(\mathbf a\)。

還需要注意,在有向圖中\(\mathbf a\)的數條性質皆不成立,關聯矩陣也暫時沒法定義。

Lightning(生成樹計數)

原題 題意 n個點,任意兩個點之間可以連邊當且僅當距離不大於r,並且中間沒有其他邊。求生成樹個數。解析 判斷中間有沒有點可以直接n3for,也可以n2log,列舉每個點為起點,其他的點與之形成的向量用map比較是否存在即可。連完邊就用矩陣樹進行n3做就行了。include using namespa...

內向樹的生成樹計數

所謂內向樹,就是樹上的邊是由兒子指向父親 來看乙個題 元首把花園分為 nn n 行 mm m 列的網格。每個格仔中都可以放置乙個標識,指向上 下 左 右四個方向中的任意乙個。元首位於乙個格仔時,會按照其中標識所指的方向進入周圍的格仔,或者走出花園 即目的格仔不在網格之內 舉個例子 對於下面的放置方式...

無標號生成樹計數

做模擬賽的時候碰到了,感覺稍微有點意思,寫來自己看。無標號有根樹 設f n 表示樹的大小為 n 的方案數,其生成函式f z n 0f nzn。考慮生成函式的組合意義,fn 1可以由若干個無序的不同大小的 若干個無序的相同大小的本質不同的子樹 拼成,對於大小為 k 的樹,作為多棵子樹時他可以貢獻的不同...