LOJ 10070 最小生成樹計數

2022-05-19 22:17:06 字數 1125 閱讀 2669

一道mst……

最開始是毫無頭緒,於是就點開了--->題解

大部分題解都是矩陣樹……然而第一篇題解告訴了我們暴搜也能過(

思路大概是說,對於乙個圖\(g\),它的所有最小生成樹的相同權值的邊的數量是相等的。

(這裡批評自己一下(雖然ac了但是最終沒有證明這個思路的正確性()

(不過花了一些時間來嘗試……最後沒能成功舉出反例,於是就預設這是對的了()

對邊的權值排序,直接跑一遍mst,用結構體來記錄相同權值的邊出現的次數。然後暴搜一通邊就完了qwq

神仙資料

#include #include #include #include #include #define mod 31011

#define maxn 105

#define maxm 1005

using namespace std;

struct segm

e[maxm];

struct sums

a[maxm];

int n,m,f[maxn],toti=0,tot=0,sum,ans=1;

int find(int q)

bool cmp(segm x,segm y)

void dfs(int wei,int cur,int del)

return;

} int xx=find(e[cur].u),yy=find(e[cur].v);

if (xx!=yy)

dfs(wei,cur+1,del);

return;

}int main()

for (int i=1;i<=m;i++)

sort(e+1,e+m+1,cmp);

for (int i=1;i<=m;i++)

int xx=find(e[i].u),yy=find(e[i].v);

if (xx!=yy)

} if (toti!=n-1)

a[tot].r=m;

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

for (int i=1;i<=tot;i++)

}} printf("%d",ans);

return 0;

}

hdu 4408 最小生成樹計數

經典題了 include include include include include include include include include include include include include include using namespace std define clr a,...

JSOI2008 最小生成樹計數

time limit 1 sec memory limit 162 mb 現在給出了乙個簡單無向加權圖。你不滿足於求出這個圖的最小生成樹,而希望知道這個圖中有多少個不同的 最小生成樹。如果兩顆最小生成樹中至少有一條邊不同,則這兩個最小生成樹就是不同的 由於不同的最小生 成樹可能很多,所以你只需要輸出...

JSOI2008 最小生成樹計數

bzoj luogu 根據最小生成樹的一些性質,不同的最小生成樹固定權值的邊數是一樣的 而且我們發現這題同權的邊數 10 於是可以預處理出每種權值需要多少條邊,然後爆搜 然後不能路徑壓縮,不然你怎麼回溯.注意到n只有100,暴力並查集搜根沒有任何問題 複雜度 o 邊權數 2 最壞也就是 100 10...