Prim(普利姆)演算法求最小生成樹 O N 2

2021-10-24 07:16:21 字數 924 閱讀 2896

給定乙個n個點m條邊的無向圖,圖中可能存在重邊和自環,邊權可能為負數。

求最小生成樹的樹邊權重之和,如果最小生成樹不存在則輸出impossible。

給定一張邊帶權的無向圖g=(v, e),其中v表示圖中點的集合,e表示圖中邊的集合,n=|v|,m=|e|。

由v中的全部n個頂點和e中n-1條邊構成的無向連通子圖被稱為g的一棵生成樹,其中邊的權值之和最小的生成樹被稱為無向圖g的最小生成樹。

輸入格式

第一行包含兩個整數n和m。

接下來m行,每行包含三個整數u,v,w,表示點u和點v之間存在一條權值為w的邊。

輸出格式

共一行,若存在最小生成樹,則輸出乙個整數,表示最小生成樹的樹邊權重之和,如果最小生成樹不存在則輸出impossible。

資料範圍

1≤n≤500,

1≤m≤105,

圖中涉及邊的邊權的絕對值均不超過10000。

輸入樣例:

4 51 2 1

1 3 2

1 4 3

2 3 2

3 4 4

輸出樣例:

6找到集合外距離集合最近的點,將這個距離加入答案,標記更新,再去更新其他點到集合的距離。

#includeusing namespace std;

const int n=510;

int n,m,t,res;

int dist[n],st[n];

int g[n][n];

int prim()

return res;

}int main()

int t=prim();

if(t==-1) cout<<"impossible";

else cout

}

最小生成樹 普利姆 Prim 演算法

概念 將給出的所有點連線起來 即從乙個點可到任意乙個點 且連線路徑之和最小的圖叫最小生成樹。最小生成樹屬於一種樹形結構 樹形結構是一種特殊的圖 或者說是直鏈型結構,因為當n個點相連,且路徑和最短,那麼將它們相連的路一定是n 1條。可以利用參考乙個問題理解最小生成樹,有n個村莊,每個村莊之間距離不同,...

最小生成樹之prim 普利姆 演算法

求最小生成樹 prim演算法 1000 ms 10000 kb 1726 3439 tags 生成樹 求出給定無向帶權圖的最小生成樹。圖的定點為字元型,權值為不超過100的整形。在提示中已經給出了部分 你只需要完善prim演算法即可。輸入第一行為圖的頂點個數n 第二行為圖的邊的條數e 接著e行為依附...

普里姆(Prim)求最小生成樹

一 普里姆 prim 演算法 1.基本思想 設g v,e 是具有n個頂點的連通網,t u,te 是g的最小生成樹,t的初始狀態為u u0 v te 重複執行下述操作 在所有u u,v v u的邊中找一條代價最小的邊 u,v 併入集合te,同時v併入u,直至u v。即 1 從連通網路 g 中的某一頂點...