7-3 公路村村通(30 分)
現有村落間道路的統計資料表中,列出了有可能建設成標準公路的若干條道路的成本,求使每個村落都有公路連通所需要的最低成本。
輸入格式:
輸入資料報括城鎮數目正整數n(≤1000)和候選道路數目m(≤3n);隨後的m行對應m條道路,每行給出3個正整數,分別是該條道路直接連通的兩個城鎮的編號以及該道路改建的預算成本。為簡單起見,城鎮從1到n編號。
輸出格式:
輸出村村通需要的最低成本。如果輸入資料不足以保證暢通,則輸出−1,表示需要建設更多公路。
輸入樣例:
6 15
1 2 5
1 3 3
1 4 7
1 5 4
1 6 2
2 3 4
2 4 6
2 5 2
2 6 6
3 4 6
3 5 1
3 6 1
4 5 10
4 6 8
5 6 3
輸出樣例:
12
#include
using
namespace
std;
int f[10000];
struct edgeedgeone;
edge es[10000];
bool cmp(edge e1,edge e2)
f[a]=fun(f[a]);
return f[a];
}void group(int x,int y)
return;
}void init()
}bool same(int x,int y)
long
long kruskal()
}return res;
}int main()
init();
for(int i=1;i<=e;i++)
res=kruskal();
for(int j=1;j<=v;j++)
}if(res==-1)else
return
0;}
最小生成樹 案例6 1 7 公路村村通
題目鏈結 思路 最小生成樹問題,我們直接利用kruskal演算法。即將所有邊按照權重從小到大排列,每次挑選其中權重最小的邊生成樹,並且每次挑選時要篩去選擇該邊會形成迴路的邊,利用並查集即可,若在並查集中兩點同根,即兩點連通,則選擇連線兩點的邊會形成迴路.include include include...
PTA 公路村村通 最小生成樹
現有村落間道路的統計資料表中,列出了有可能建設成標準公路的若干條道路的成本,求使每個村落都有公路連通所需要的最低成本。輸入資料報括城鎮數目正整數n n le 1000 1 000 和候選道路數目m m le 3n 3 n 隨後的m m行對應m m條道路,每行給出3個正整數,分別是該條道路直接連通的兩...
公路村村通 30分 最小生成樹
公路村村通 30分 現有村落間道路的統計資料表中,列出了有可能建設成標準公路的若干條道路的成本,求使每個村落都有公路連通所需要的最低成本。輸入資料報括城鎮數目正整數n n le 1000 1 000 和候選道路數目m m le 3n 3 n 隨後的m m行對應m m條道路,每行給出3個正整數,分別是...