最小生成樹 kruskal

2021-09-13 16:52:40 字數 582 閱讀 2071

#include#include#includeusing namespace std;

int n,m,tot=0,k=0;//n端點總數,m邊數,tot記錄最終答案,k已經連線了多少邊

int fat[200010];//記錄集體老大

struct node

edge[200010];

bool cmp(const node &a,const node &b)//sort排序(當然你也可以快排)

int father(int x)//找集體老大,並查集的一部分

void unionn(int x,int y)//加入團體,並查集的一部分

int main()

for(int i=1;i<=n;i++) fat[i]=i;//自己最開始就是自己的老大 (初始化)

sort(edge+1,edge+1+m,cmp);//按權值排序(kruskal的體現)

for(int i=1;i<=m;i++)//從小到大遍歷 }

printf("%d",tot);

return 0;

}

kruskal 最小生成樹

include include 產生隨機數組用 include 同上 include using namespace std 1 帶權邊的類myarc class myarc bool operator const myarc arc myarc myarc int beginvex,int end...

最小生成樹Kruskal

最小生成樹有兩個特點,乙個是保證了所有邊的和是最小值,另乙個是保證了所有邊中的最大值最小。struct edge bool friend operator edge a,edge b 構邊 vectoredge int id max int mini void initial void input ...

最小生成樹(kruskal)

kruskal演算法 1 記graph中有v個頂點,e個邊 2 新建圖graphnew,graphnew中擁有原圖中相同的e個頂點,但沒有邊 3 將原圖graph中所有e個邊按權值從小到大排序 4 迴圈 從權值最小的邊開始遍歷每條邊 直至圖graph中所有的節點都在同乙個連通分量中 if 這條邊連線...