1078 最小生成樹 prime

2021-07-06 08:27:23 字數 1325 閱讀 5572

時間限制: 1 s

空間限制: 128000 kb

題目等級 : ** silver

題解

農民約翰被選為他們鎮的鎮長!他其中乙個競選承諾就是在鎮上建立起網際網路,並連線到所有的農場。當然,他需要你的幫助。 約翰已經給他的農場安排了一條高速的網路線路,他想把這條線路共享給其他農場。為了使花費最少,他想鋪設最短的光纖去連線所有的農場。 你將得到乙份各農場之間連線費用的列表,你必須找出能連線所有農場並所用光纖最短的方案。 每兩個農場間的距離不會超過100000

輸入描述 input description

第一行: 農場的個數,n(3<=n<=100)。

第二行..結尾: 接下來的行包含了乙個n*n的矩陣,表示每個農場之間的距離。理論上,他們是n行,每行由n個用空格分隔的數組成,實際上,他們每行限制在80個字元以內,因此,某些行會緊接著另一些行。當然,對角線將會是0,因為線路從第i個農場到它本身的距離在本題中沒有意義。

輸出描述 output description

只有乙個輸出,是連線到每個農場的光纖的最小長度和。

樣例輸入 sample input

40  4  9 21

4  0  8 17

9  8  0 16

21 17 16  0

樣例輸出 sample output

28

#include #include #include #include #include #include #include #include using namespace std;

#define n 105

#define inf 99999999

int n ;

int diss[n][n] ;

bool vis[n] ;

int low[n] ;

void prime()

vis[newp] = true ;

low[newp] = 0 ;

int sums = 0 ;

int num = 1 ;

while(num != n)

}} if(minn == inf)

break ;

num ++ ;

sums += low[newp] ; // 在更新low[i]之前 sums加上距離

for(i = 0 ;i < n ; i++) // 更新low[i]

}vis[newp] = true ;

} printf("%d\n",sums) ;

}int main()

} prime();

return 0 ;

}

最小生成樹 prime

include stdio.h define max 10 define inf 999 typedef struct mgraph mgraph int lowest max lowest vi 表示當前生成樹這一整體到其餘頂點的權值 int cloest max cloest vi 儲存v s中...

1078 最小生成樹

題目描述 description 農民約翰被選為他們鎮的鎮長!他其中乙個競選承諾就是在鎮上建立起網際網路,並連線到所有的農場。當然,他需要你的幫助。約翰已經給他的農場安排了一條高速的網路線路,他想把這條線路共享給其他農場。為了使花費最少,他想鋪設最短的光纖去連線所有的農場。你將得到乙份各農場之間連線...

1078 最小生成樹

題目描述 description 農民約翰被選為他們鎮的鎮長!他其中乙個競選承諾就是在鎮上建立起網際網路,並連線到所有的農場。當然,他需要你的幫助。約翰已經給他的農場安排了一條高速的網路線路,他想把這條線路共享給其他農場。為了使花費最少,他想鋪設最短的光纖去連線所有的農場。你將得到乙份各農場之間連線...