bzoj 1016 kruscal 乘法原理

2021-07-31 11:18:38 字數 2694 閱讀 9966

題意:求n個點、m條邊的不同的最小生成樹的方案數

每種邊權的邊數量固定、作用固定

先做一遍最小生成樹,求出每種邊權在最小生成樹中的數量num[i]

再從小到大對每種邊權進行dfs,求出對於第i種邊權,有多少種滿足num[i]的取法

根據乘法原理乘上即可

對於已經處理完的第i種邊權,把該種邊權所有的邊能加到最小生成樹的就加進去,再進行下一種邊權的判斷

注意並查集不要用路徑壓縮,不然不方便分開聯通塊(不容易還原)

最小生成樹 bzoj1016

題目中要求求出不同的最小生成樹的個數 bzoj 1016 這裡我們使用kruskal演算法來求解最小生成樹,它的基本思路為 根據路徑權值由小到大進行排序,然後每次都拿出還沒有判斷的路徑中權值最小的,判斷兩端點是否在同一連通分量中,如果在同一連通分量中,不做任何操作,否則將這條邊加入到最小生成樹中 那...

bzoj1016 JSOI2008 最小生成樹計數

description 現在給出了乙個簡單無向加權圖。你不滿足於求出這個圖的最小生成樹,而希望知道這個圖中有多少個不同的 最小生成樹。如果兩顆最小生成樹中至少有一條邊不同,則這兩個最小生成樹就是不同的 由於不同的最小生 成樹可能很多,所以你只需要輸出方案數對31011的模就可以了。input 第一行...

BZOJ1016 最小生成樹計數

題面描述 最小生成樹計數 給定乙個n個點 m條邊的無向圖,求其最小生成樹的個數。相同邊權的邊不會超過10條。思維難度 提高 難度 提高 題解 先給出兩個引理 1.克魯斯卡爾求最小生成數實際上是分成很多個階段的,你可以感受到 很多邊權相同的邊因為排序順序不同,導致它們被訪問的順序不同。但每處理完乙個邊...