杭電1102 最小生成樹 並差集

2021-10-25 07:24:46 字數 928 閱讀 2279

kruskal 配並差集

模板題

#include

#include

#include

#include

using

namespace std;

const

int mx =

105;

//儲存節點上級

int f[mx]

;//儲存兩節點之間的距離

struct node

;//計算兩個節點之間的距離

double

length

(double a,

double b)

//排序op

bool

cmp(node a, node b)

//初始化陣列,設定每個節點的上級是自己

void

init()

//尋找x節點的最上級

intfin

(int x)

//將x節點和y節點連線起來

void

merge

(int x,

int y)

//判斷x節點和y節點是否已經連線

bool

same

(int x,

int y)

intmain()

}int q; cin >> q;

//輸入本來就連線的節點,直接連線,不用計算距離

while

(q--

)//按照距離從小到大排序

sort

(len, len + cnt, cmp)

;double sum =0;

for(

int i =

0; i < cnt; i++)}

cout << sum << endl;

}}

最小生成樹 基礎)杭電1233

這題是最小生成樹 kruscal演算法 這也是我第一次接觸。首先我來闡述一下 最小生成樹的過程及目的。目的 要在n個 城市之間 鋪設光纜,主要目標是要使這n個城市的任意兩個之間都可以通訊,但鋪設光纜的費用很高,且各個城市之間鋪設光纜的費用不同 另乙個目標是要使鋪設光纜的總費用最低。這就需要找到帶權的...

杭電1272 並差集

原題傳送門,並差集模板詳解鏈結,大佬並差集詳解鏈結。解題思路 1 判斷是否有環 2 判斷所有的房子是否連在一起。第一點可以通過same函式判斷,在輸入的時候就可以判斷 第二點可以先通過vis陣列標記,然後遍歷vis陣列,當vis i 1並且id i i的時候,說明i是最上面的父親。再符合條件的情況下...

杭電1198 並差集

原題傳送門,並差集模板函式簡單介紹,大佬的並差集詳解。寫在題前 因為最近學的並差集,因此專門搜的杭電並差集,也就是說,在看這個題之前我已經知道他是用並差集來做的。之前我碰到的題沒有涉及到二維這種情況,其實了解了思路還是很好做的,就是過程有點繁瑣,細節要注意。解題步驟 1 遍歷每個田地,對於每個田地,...