codevs2627題解 村村通

2021-07-05 22:21:03 字數 1629 閱讀 9926

1

村村通

時間限制

: 1 s

空間限制

: 32000 kb

題目描述

description

農民約翰被選為他們鎮的鎮長!他其中乙個競選承諾就是在鎮上建立起網際網路,並連線到所有的農場。當然,他需要你的幫助。

約翰已經給他的農場安排了一條高速的網路線路,他想把這條線路共享給其他農場。為了用最小的消費,他想鋪設最短的光纖去連線所有的農場。

你將得到乙份各農場之間連線費用的列表,你必須找出能連線所有農場並所用光纖最短的方案。每兩個農場間的距離不會超過

100000

輸入描述

input description

第一行:

農場的個數,n(

3<=n<=100

)。第二行,某些行會緊接著另一些行。當然,對角線將會是

0,因為不會有線路從第i個農

..結尾

:後來的行包含了乙個

n*n的矩陣

,表示每個農場之間的距離。理論上,他們是

n行,每行由

n個用空格分隔的數組成,實際上,他們限制在

80個字元,因此場到它本身。

輸出描述

output description

只有乙個輸出,其中包含連線到每個農場的光纖的最小長度。

樣例輸入

sample input

40 4 9 21

4 0 8 17

9 8 0 16

21 17 16 0

樣例輸出

sample output28

資料範圍及提示

data size & hint

暫時無範圍。

裸的最小生成樹,我用的

kruskal,

但是開始的時候因

為某個點的取值範圍寫錯了導致wa了半天orz。。

上**。。

#include//kruskal演算法

#include#includeusing namespace std;

const int maxn=105;

const int maxe=maxn*maxn;

int n,w;

int m;

struct edge

e[maxe];

int father[maxn];

bool compare(edge e1,edge e2)

int find(int x)

void merge(int x,int y)//向最小生成樹加邊

}void kruskal()

} printf("%d",total);

}int main()

} sort(e+1,e+1+m,compare);//將邊集陣列排序

for(int i=1;i<=n;i++)//初始化 讓每個點的父親為該節點

kruskal();

return 0;

}

公路村村通

公路村村通 kruscal 演算法 include include include using namespace std int per 1010 n,m struct node 結構體來儲存邊 x 5005 bool cmp node a,node b int find int x 並查集的查詢...

公路村村通

現有村落間道路的統計資料表中,列出了有可能建設成標準公路的若干條道路的成本,求使每個村落都有公路連通所需要的最低成本。輸入資料報括城鎮數目正整數 n 和候選道路數目 m 隨後的 m行對應 m條道路,每行給出3個正整數,分別是該條道路直接連通的兩個城鎮的編號以及該道路改建的預算成本。為簡單起見,城鎮從...

公路村村通

現有村落間道路的統計資料表中,列出了有可能建設成標準公路的若干條道路的成本,求使每個村落都有公路連通所需要的最低成本。輸入格式 輸入資料報括城鎮數目正整數n 1000 和候選道路數目m 3n 隨後的m行對應m條道路,每行給出3個正整數,分別是該條道路直接連通的兩個城鎮的編號以及該道路改建的預算成本。...