基本介紹
模板題目
**實現
最小生成樹問題一般有兩種解法 prim和kruskal 因為之前學過並查集所以果斷選擇先學後者
kruskal是一種利用並查集來求解最小生成樹的演算法 它將每乙個聯通塊當作乙個集合
先將邊按從小到大的順序排序 現在每乙個點都是孤立的 並且自己成為乙個集合 然後按排好的順序列舉邊 如果邊連著兩個集合 就加入最小生成樹 一直到選出來n-1條邊
用結構體儲存 起點 終點 長度
struct point;
point a[size];
自定義sort
bool cmp(point a,point b)
point[size];
ll n,m;
ll site,ans,total;
ll father[size];
inline ll read()
while(isdigit(ch))
return num*f;
}inline
void add(ll x,ll y,ll z)
inline
bool cmp(kruskal a,kruskal b)
inline
void unionn(ll x,ll y)
int main()
sort(point+1,point+site+1,cmp);
for(int i=1;i<=site;i++)
}printf("%d",ans);
}//coyg
模板 最小生成樹 Kruskal
兩種寫法 第一種 使用陣列 時間複雜度 o nlogn includeusing namespace std define max 200000 10 int n,m n 結點的數量 m 邊的數量 int u max v max w max r max p max u i v i 第i條邊的兩端點,...
最小生成樹(模板 Kruskal)
description 某省調查鄉村交通狀況,得到的統計表中列出了任意兩村莊間的距離。省 暢通工程 的目標是使全省任何兩個村莊間都可以實現公路交通 但不一定有直接的公路相連,只要能間接通過公路可達即可 並要求鋪設的公路總長度為最小。請計算最小的公路總長度。input 測試輸入包含若干測試用例。每個測...
最小生成樹Kruskal演算法模板
利用陣列fa來記錄各個節點的父節點,初始化為自己 通過sort排序,從邊長最短到最長 for 邊長 判斷 如果邊的兩個端點的父節點不相同,可選 把選過的邊的兩端點中,大序號的父節點處理為小序號的父節點 include include using namespace std define n 28 i...