最小生成樹(Kruskal)

2021-07-08 10:39:30 字數 943 閱讀 9784

在一張圖上有n個點,點與點之間的連線的花費都已經告訴你了,請你設計一下,如果解決這個「最小生成樹」的問題。

輸入首先輸入乙個數字n(0〈=n〈=100)

然後輸入乙個n*n的矩陣 其中第i行第j列的數字k表示從點i到點j需要的花費。

輸出乙個數字,最少需要多少花費才能使得整張圖任意兩點都直接或者間接連通(也就是最小生成樹的權)

sample input

50 41 67 34 0 

41 0 69 24 78 

67 69 0 58 62 

34 24 58 0 64 

0 78 62 64 002

0 11 0

sample output

1160

#include#includeusing namespace std;

#define max 101

struct tedge

;void vinit(int narr,int nn);

int ninput(tedge tarr,int nn);

void vsort(tedge tarr,int ne);

bool bcmp(const tedge &ta,const tedge &tb);

int nkruskal(tedge tarr,int narr,int nn);

void vout(int nout);

void vmerge(int narr,int na,int nb,int nn);

int main()

return 0;

}void vinit(int narr,int nn)

}int ninput(tedge tarr,int nn)

nedgecount++;

} return nret;

}void vout(int nout)

{ cout<

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 這條邊連線...