#include<cstdio>
#include<cstring>
#include<iostream>
#include<cstdlib>
using namespace std;
int map[5001][5001],dis[5001];
bool p[5001];
int main(){
#ifndef ONLINE_JUDGE
freopen("prim.in","r",stdin);
freopen("prim.out","w",stdout);
#endif
int i,j,k,m,n,a,b,c,flag;
scanf("%d%d",&n,&m);
memset(map,127,sizeof(map));
for(i=1;i<=m;i++){
scanf("%d%d%d",&a,&b,&c);
map[a][b]=min(map[a][b],c);
map[b][a]=min(c,map[b][a]);
}
memset(dis,127,sizeof(dis));
dis[1]=0;
for(int _=1;_<=n;_++){
k=0;
for(j=1;j<=n;j++)
if(!p[j] && dis[j]<dis[k])
k=j;
if(!k)flag=1;
p[k]=1;
for(j=1;j<=n;j++)
if(!p[j] && map[k][j]<dis[j] )
dis[j]=map[k][j];
}
if(!flag){
for(i=1;i<=n;i++)
flag+=dis[i];
printf("%d\n",flag);
}
elinput
数据
5 18
2 4 276
3 3 435
3 4 608
2 4 860
1 2 318
1 3 547
5 4 419
2 5 98
1 5 460
5 3 399
3 5 240
3 2 733
3 3 903
4 2 909
5 2 206
3 4 810
2 1 115
2 3 419
729