7 5 最小支撐樹 10分

2021-10-18 03:06:18 字數 1234 閱讀 2670

給定乙個包含n個頂點的正權無向圖,編號為0至n-1。請編寫程式求出其最小支撐樹,並計算其代價。

輸入包含多組資料。每組資料第一行為2個整數n和e,均不超過200,分別表示圖的頂點數和邊數。接下來e行表示每條邊的資訊,每行為3個非負整數a、b、c,其中a和b表示該邊的端點編號,c表示權值。各邊並非按端點編號順序排列。

對於每組資料,若存在最小支撐樹則輸出乙個整數,為最小支撐樹各邊權值之和;若不存在最小支撐樹,則輸出「there is no minimum spanning tree.」。

450

1103

1135

1212

3842

0112

38

3

there is no minimum spanning tree.

找最小生成樹的過程裡用到了克魯斯卡爾法,至於是否有最小生成樹的判斷,就是判斷這個圖是不是個連通圖,只要連通子塊的個數為1,它就能找到最小生成樹;

敲好了之後沒考慮好結束迴圈的條件,還以為是找不到樹就break結束,於是寫的是while(1),但是一直是0分過不去;之後寫成while(cin >> n >> e),一下就過了

#

include

using

namespace std;

int f[

210]

;struct

tree

;bool

cmp(

struct

tree node1,

struct

tree node2)

intfind

(int x)

void

merge

(int x,

int y)

intmain()

;//flag陣列:生成樹時,若該點被選過了就令它的值為1

int a,b,c;

for(

int i =

0;i < n;i++

)for

(int i =

0;i < e;i++

)int num =0;

for(

int i =

0;i < n;i++)if

(num==1)

else

} cout << cnt << endl;

}else

}}

演算法與資料結構 最小生成樹(最小支撐樹)

概念 設g v,e 是乙個無向連通圖,生成樹上各邊的權值之和為該生成樹的代價,在g的所有生成樹中,代價最小的生成樹就稱為最小支撐樹,或稱最小生成樹。區別 最小生成樹是各邊權值和最小的數 最優歸併樹是帶權外部路徑長度最短的樹 演算法 kruskal演算法 prim演算法 來自 1 include 2 ...

樹的最小支配集

最小支配集,就是圖中用最少的點覆蓋其它所有點 如果用選a點覆蓋,則與a點相連的點都被覆蓋,大致 就是這樣 有乙個圖g,現在希望在一些點建立控制站,每個控制站能控制與它相臨的點 直接相連 現在希望有選擇的在一些點建立控制站,使得以最小得控制站數,控制所有的點 圖的最小支配集是np 問題,我只會樹的最小...

7 5 矩陣運算 (10 分)

7 5 矩陣運算 10 分 給定乙個n n的方陣,本題要求計算該矩陣除副對角線 最後一列和最後一行以外的所有元素之和。副對角線為從矩陣的右上角至左下角的連線。輸入格式 輸入第一行給出正整數n 1輸出格式 在一行中給出該矩陣除副對角線 最後一列和最後一行以外的所有元素之和。輸入樣例 42 3 4 1 ...