求最小生成樹 kruskal演算法

2021-10-07 03:39:11 字數 752 閱讀 9282

kruskal演算法

c++**實現

輸入邊資訊:兩頂點及權重

按權重從小到大排序

找n-1條不構成迴路的最小邊(難點:判斷是否構成迴路)

#include

using

namespace std;

//邊結構體

typedef

struct edge edge;

intmain()

//按照權重從小到大排序

for(i =

0; i <

10; i++)}

edge m;

m = ed[i]

; ed[i]

= ed[t]

; ed[t]

= m;

}//儲存頂點之間是否可達標誌

bool visited[10]

[10]=

;for

(i =

0; i <

10; i++

) visited[i]

[i]=

true

;//找不構成迴路的最小邊

for(i =

0; i <

10; i++

)for

(int j =

0; j <

10; j++)}

if(visited[ed[i]

.vex2]

[j])}}

}}}

Kruskal演算法求最小生成樹

include include define max vex 100 typedef struct edge edge edgeset max vex 邊集陣列 edgnum max vex 1 int creat return edgnum 排序,使邊集陣列edgeset元素按權值遞增順序排列 v...

kruskal演算法求最小生成樹

kruskal演算法是一種使用貪心思路求解無向圖的最小生成樹的演算法。其大體思路為 將邊按權重排序,然後每次選出權最小且不使圖產生環的邊,作為樹的邊掛上樹。具體來講就是這麼兩個步驟 1.把邊按權重排序。2.依照1的順序遍歷邊 使用乙個並查集來判斷加進這條邊後圖中是否有環。如果沒有環,更新並查集,並把...

kruskal演算法求最小生成樹

描述 要求對乙個圖使用kruskal演算法求最小生成樹,依次輸出選出的邊所關聯的頂點序列,要求下標較小者在前,如圖所示,其頂點序列為1 3 4 6 2 5 3 6 2 3 輸入若干行整數 第一行為兩個整數,分別為圖的頂點數和邊數 第二行開始是該圖的鄰接矩陣,主對角線統一用0表示,無直接路徑的兩點用1...