《挑戰程式設計競賽》最小生成樹(鄰接矩陣實現)

2021-09-25 21:19:16 字數 907 閱讀 7125

思路都寫在注釋裡了,說白了就是不斷更新,利用染色來實現避圈法

#include

using namespace std;

#define max 100

#define black 1

#define white -1

#define gray 0

#define no -1

constexpr auto inf =

1<<21;

;int am[max]

[max]

;//鄰接矩陣

int n;

int p[max]

;//生成樹的父節點

int d[max]

;//到每乙個點的最短路徑

int color[max]

;int

prim()

d[0]=

0;//首先加入第乙個節點,所以花銷d[0]為0

while(1

)//反覆掃瞄}if

(mincost==inf)

color[u]

= black;

for(

int i =

0; i < n; i++)}

}for

(int i =

0; i < n; i++)}

return ans;

}int

main()

}for

(int i =

0; i < n; i++

) cout << endl;

} cout <<

"\n"

<<

prim()

("pause");

return0;

}

最小生成樹Prim演算法(鄰接矩陣和鄰接表)

最小生成樹,普利姆演算法 簡述演算法 先初始化一棵只有乙個頂點的樹,以這一頂點開始,找到它的最小權值,將這條邊上的令乙個頂點新增到樹中 再從這棵樹中的所有頂點中找到乙個最小權值 而且權值的另一頂點不屬於這棵樹 重複上一步 直到所有頂點併入樹中 圖示 注 以a點開始,最小權值為 另一頂點是 將 加入到...

鄰接矩陣 最小生成樹 普里姆演算法

風雨難洗心痕,滄桑不滅情傷。莫要輕言亙古,離散才看荒涼。include stdio.h typedef char vertextype 頂點 typedef int edgetype 邊的權值 define maxvex 100 define infinity 65535 鄰接矩陣 typedef ...

最小生成樹之prime演算法(鄰接矩陣實現)

概念 生成樹 乙個連通圖的生成樹,指的是該圖的乙個子圖 沒有形成迴路 他包含圖的所有結點,但只有把所有結點連線在一起的n 1條必要的邊 最小生成樹 乙個連通圖的生成樹中,所有邊的權值加起來最小的生成樹 稱為最小生成樹 簡介 prime演算法可在加權連通圖里搜尋最小生成樹。即 所有邊的權值之和為最小。...