最小生成樹練習3

2021-09-24 18:24:04 字數 966 閱讀 3004

暢信道路

放圖祭命運共同體

祭祀完畢!

下面來看這道題。

這輸入方式……不明擺著讓我們用kruscal嗎?

只是這道題與之前兩道不一樣的地方是,有部分道路是事先修好的。

那麼我們就稍微變通一下即可。

我們回想一下,我們怎麼記錄生成樹的?並查集!

所以我們只需要在讀入時,把現成的邊在並查集中連在一起即可,剩下的這個邊就可以直接扔掉,不需要放在kruscal的排序序列中。剩下的按kruscal做一遍即可。

每加一條邊,把邊權加在最終結果即可。

**如下:

#include

#include

#include

using

namespace std;

struct edge

;int

cmp(edge a,edge b)

int n,m;

edge e[

10005];

int p[

105]

;int ans;

intfind

(int cur)

void

work()

}}intmain()

for(

int i=

1;i<=n;i++

) m=0;

for(

int i=

0;i(n-1)/

2;i++

)else

}work()

;printf

("%d\n"

,ans);}

return0;

}

ps:這兩天在忙著填志願,可能做題比較少,以後會加大題量的。

最小生成樹練習1

今天就做點kruskal的水題,晚一會兒繼續做 include include include include define m 15005 using namespace std struct edge arr m int fa m bool cmp edge a,edge b return su...

2016夏季練習 最小生成樹

prim演算法,還是比較輕鬆的 解釋在注釋裡面 include include include include include include using namespace std int n,r const int inf 0x3f3f3f3f const int maxn 55 int mp ...

最小生成樹 次小生成樹

一 最小生成樹 說到生成樹首先要解釋一下樹,樹是乙個聯通的無向無環圖,多棵樹的集合則被稱為森林。因此,樹具有許多性質 1.兩點之間的路徑是唯一的。2.邊數等於點數減一。3.連線任意兩點都會生成乙個環。對於乙個無向聯通圖g的子圖,如果它包含g的所有點,則它被稱為g的生成樹,而各邊權和最小的生成樹則被稱...