POJ 1258 最小生成樹 Prim

2022-09-19 01:51:09 字數 969 閱讀 8686

乙個有n個節點的連通圖的生成樹是原圖的極小連通子圖,且包含原圖中的所有n個結點,並且有保持圖連通的最少的邊。最小生成樹可以用kruskal演算法或者prim演算法求出。

kruskal演算法的過程為不斷對子圖進行合併,直到形成最終的最小生成樹。prim演算法的過程則是只存在乙個子圖,不斷選擇頂點加入到該子圖中,即通過對子圖進行擴張,直到形成最終的最小生成樹。

此**對著兩種演算法做了詳細介紹

最小生成樹的乙個典型問題

poj-1258

題意:要在n個城市之間鋪設光纜,主要目標是要使這 n 個城市的任意兩個之間都可以通訊,但鋪設光纜的費用很高,且各個城市之間鋪設光纜的費用不同,因此另乙個目標是要使鋪設光纜的總費用最低。這就需要找到帶權的最小生成樹。

輸入:輸入包含多組資料。對於每組資料, 第一行包含乙個整數n表示農場的數量 (3 <= n <= 100). 接下來是乙個n*n的鄰接矩陣,表示各個村莊之間的距離 . 當然,對角線將是0,因為從農場到農場的距離對於這個問題並不有趣。

輸出:對於每種情況,請輸出乙個整數表示長度,該長度是連線整個農場集合所需的最小光纖長度的總和。

#include#includeusing namespace std;

int init[105][105],n;//無向圖的鄰接矩陣

int vis[105]=,mincost[105];//vis標記已經走過的節點,mincoat表示從x定點出發的邊到每個頂點的最小權值

/************************最小生成樹的prim演算法************************/

int prim()//從某個頂點出發,不斷新增邊

}return minsum;//求得題目最終的最小和

}int main()

return 0;

}

POJ 1258 最小生成樹

include include struct fiberfiber 10000 struct farmsfarms 100 void exchange struct fiber fiber,int i,int j int partition struct fiber fiber,int p,int ...

poj1258 最小生成樹

題目鏈結在這裡 題目描述 john要給村民通寬頻!他現在已經有了乙個高速網路了,現在想將村民相互連線起來。現給出村民之間的距離,求將他們連線起來的最小花費為多少。思路分析 最小生成樹,盤它就完事了。如下 include include include include include using na...

最小生成樹模板 POJ 1258

最小生成樹是乙個比較簡單資料結構,形成最小生成樹的方式有兩種。最小生成樹是有圖生成樹,保證樹的每條邊的權值之和最小的生成樹就叫做最小生成樹,這一類的題目起初比較基礎,主要是熟悉模板,poj 1258 也就是這樣的題目,非常適合剛剛學習的人。兩種方法的思路分別是找邊和找點,簡單點說就是,找到全集中最小...