BZOJ5297 CQOI2018 社交網路

2022-05-25 11:06:09 字數 950 閱讀 6391

考前掙扎

有向圖生成樹

我們知道對於無向圖生成樹可以通過矩陣樹定理來算具體就是

度數矩陣 - 鄰接矩陣 去掉任意一行一列得到余子式 對行列式求值

有向圖生成樹分為外向和內向兩種

外向生成樹當然是所有邊指向兒子 他的矩陣樹定理是這個樣子

對於有向邊(x,y)度數矩陣d[y][y] ++ 鄰接矩陣e[x][y] ++

內向生成樹所有邊指向父親

對於有向邊(x,y)度數矩陣d[x][x] ++ 鄰接矩陣e[x][y] ++

(說白了就是外向生成樹反過來)

記憶的乙個方法就是度數矩陣只記錄入邊(就是生成樹的入邊 【**不會點**

然後照常進行度數-鄰接 然後我們由於是有向邊 那麼我們去掉的一行一列(i,i)就表示以i為根

然後正常行列式求值即可

(這個題小坑點 邊是反著讀的= =

//love and freedom.

#include#include#include#include#define inf 20021225

#define ll long long

#define mdn 10007

#define n 300

using namespace std;

int a[n][n],n,m;

int inv[mdn];

int gauss()

int iv = inv[a[i][i]];

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

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

ans = ans*a[i][i]%mdn;

return ans<0?ans+mdn:ans;

}int main()

n--; printf("%d\n",gauss());

return 0;

}

bzoj5297 Cqoi2018 社交網路

題目描述 bz題解 有向圖矩陣樹定理裸題。與無向圖區別是,對於一條邊 u,v 在基爾霍夫矩陣中令 a v v a u v 同時以 k 為根時要扔掉第 k 行第 k 列。include include include include using namespace std typedef long l...

bzoj1257 CQOI 餘數之和

題目 time limit 5 sec memory limit 162 mb submit 2383 solved 1105 submit status discuss 給出正整數n和k,計算j n,k k mod 1 k mod 2 k mod 3 k mod n的值,其中k mod i表示k除...

BZOJ1818 Cqoi2010 內部白點

給定平面上的一些黑點,其它位置都是白點,乙個白點如果上下左右都有黑點就會變成黑點,求最終會有多少個黑點 就是求交點個數 離散化後,取出所有線段,然後沿任意乙個軸朝著乙個方向掃,然後把平行於另乙個軸的線段用端點記錄,掃到一端就在樹狀陣列裡 1,另一端 1,樹狀陣列求個區間和貢獻答案即可 const m...