給定乙個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 中的某一頂點...