暢信道路
放圖祭命運共同體
祭祀完畢!
下面來看這道題。
這輸入方式……不明擺著讓我們用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的生成樹,而各邊權和最小的生成樹則被稱...