題目鏈結
思路:最小生成樹問題,我們直接利用kruskal演算法。即將所有邊按照權重從小到大排列,每次挑選其中權重最小的邊生成樹,並且每次挑選時要篩去選擇該邊會形成迴路的邊,利用並查集即可,若在並查集中兩點同根,即兩點連通,則選擇連線兩點的邊會形成迴路.
#include
#include
#include
#include
using
namespace std;
const
int max =
3e3;
struct edge
edge()
;}e[max]
;int n, m,root[max]
,sum;
bool
cmp(edge a, edge b)
intfind_root
(int x)
void
union_root
(int a,
int b)
else}}
void
kruskal()
}int
main()
kruskal()
;if(root[
find_root(1
)]==-n)
printf
("%d"
, sum)
;else
printf
("-1");
}
PTA 公路村村通 最小生成樹
現有村落間道路的統計資料表中,列出了有可能建設成標準公路的若干條道路的成本,求使每個村落都有公路連通所需要的最低成本。輸入資料報括城鎮數目正整數n n le 1000 1 000 和候選道路數目m m le 3n 3 n 隨後的m m行對應m m條道路,每行給出3個正整數,分別是該條道路直接連通的兩...
7 3 公路村村通(最小生成樹K演算法)
7 3 公路村村通 30 分 現有村落間道路的統計資料表中,列出了有可能建設成標準公路的若干條道路的成本,求使每個村落都有公路連通所需要的最低成本。輸入格式 輸入資料報括城鎮數目正整數n 1000 和候選道路數目m 3n 隨後的m行對應m條道路,每行給出3個正整數,分別是該條道路直接連通的兩個城鎮的...
公路村村通 30分 最小生成樹
公路村村通 30分 現有村落間道路的統計資料表中,列出了有可能建設成標準公路的若干條道路的成本,求使每個村落都有公路連通所需要的最低成本。輸入資料報括城鎮數目正整數n n le 1000 1 000 和候選道路數目m m le 3n 3 n 隨後的m m行對應m m條道路,每行給出3個正整數,分別是...