#include <bits/stdc++.h>
using namespace std;
const int inf = 999999;
int n, m; //N爲城鎮數目,M爲候選道路數目
int g[1000][1000]; //g[][]用來存儲城鎮之間的距離
int x, y, z; //初始化時x,y用作一條路徑兩端的城鎮,z用作路徑的長度
int cost[1000]; //cost[][]用來作爲最短路徑的每段長度
int prime();
int main()
{
#ifdef ONLINE_JUDGE
#else
freopen("in.txt","r",stdin);
#endif
cin >> n >> m;
for(int i = 1; i <= n; i++){
for(int j = 1; j <= n; j++){
g[i][j] = g[j][i] = inf;
}
}
while(m--){
cin >> x >> y >> z;
g[x][y] = g[y][x] = z;
}
for(int i = 1; i <= n; i++){
cost[i] = g[1][i];
}
cout << prime() << endl;
return 0;
}
int prime()
{
int sum = 0;
cost[1] = -1;
int i;
for(i = 1; i < n; i++){
int minimum = 999999;
int k = -1;
for(int j = 1; j <= n; j++){
if(cost[j] != -1 && cost[j] < minimum){
minimum = cost[j];
k = j;
}
}
if(k != -1){
sum += cost[k];
cost[k] = -1;
for(int j = 1; j <= n; j++){
if(g[k][j] < cost[j]) cost[j] = g[k][j];
}
}
}
for( i = 1; i <= n; i++){
if(cost[i] != -1) break;
}
if(i <= n) return -1;
else return sum;
}
PTA 7-10 公路村村通 (30 分)
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.