ACM John的農場(最小生成樹) C 實現

2021-08-26 10:03:26 字數 997 閱讀 4184

john的農場

description

john是乙個農場主,他有幾個牧場,為了好好照顧他的牛,他必須在幾個牧場之間來回,可糟糕的天氣往往使得道路非常泥濘,為此john準備在牧場之間鋪一些石子路,這樣在下雨天也能快速地從乙個牧場到另外乙個牧場。但john的資金有限,為了自己能從任乙個牧場都通過石子路到達另外乙個牧場,他需要好好設計一下線路。請幫助john設計好線路,使得john能從任乙個牧場都通過石子路到達另外乙個牧場,且線路的費用最低。

輸入:

第一行是乙個整數k,表示有多少個測試用例,以後每個測試用例佔n+1行。每個測試用例的第一行為乙個整數n(3<=n<=20),表示有多少個牧場,從第二行開始為乙個n*n的矩陣,矩陣元素aij表示從i個牧場到j個牧場的鋪路費用。

輸出:每行輸出乙個測試用例的最小鋪路費用。

sample input 26

0 6 1 5 0 0

6 0 5 0 3 0

1 5 0 5 6 4

5 0 5 0 0 2

0 3 6 0 0 6

0 0 4 2 6 0

40 1 2 3

1 0 3 4

2 3 0 1

3 4 1 0

sample output

154

#include

using namespace std;

#define infinity 65535

bool flag[21];

int cost[21][21],lowcost[21],mincost;

int main()

else lowcost[i]=infinity;}}

flag[0]=true;

i=0;

int key;

int min;

while(ilowcost[j])

}flag[key] = true;

mincost+=lowcost[key];

for(j=1;j

ACM John的農場(最小生成樹) C 實現

john的農場 description john是乙個農場主,他有幾個牧場,為了好好照顧他的牛,他必須在幾個牧場之間來回,可糟糕的天氣往往使得道路非常泥濘,為此john準備在牧場之間鋪一些石子路,這樣在下雨天也能快速地從乙個牧場到另外乙個牧場。但john的資金有限,為了自己能從任乙個牧場都通過石子路...

ACM John的農場(最小生成樹) C 實現

john的農場 description john是乙個農場主,他有幾個牧場,為了好好照顧他的牛,他必須在幾個牧場之間來回,可糟糕的天氣往往使得道路非常泥濘,為此john準備在牧場之間鋪一些石子路,這樣在下雨天也能快速地從乙個牧場到另外乙個牧場。但john的資金有限,為了自己能從任乙個牧場都通過石子路...

最小生成樹 次小生成樹

一 最小生成樹 說到生成樹首先要解釋一下樹,樹是乙個聯通的無向無環圖,多棵樹的集合則被稱為森林。因此,樹具有許多性質 1.兩點之間的路徑是唯一的。2.邊數等於點數減一。3.連線任意兩點都會生成乙個環。對於乙個無向聯通圖g的子圖,如果它包含g的所有點,則它被稱為g的生成樹,而各邊權和最小的生成樹則被稱...