#include#include #define MAX 0x3f3f3f3f #define N 110 using namespace std; int low[N],map[N][N],visit[N]; int n; int prim()//普里姆算法 { int i,j,pos,min,result=0; memset(visit,0,sizeof(visit)); visit[1]=1; pos=1; for(i=1;i<=n;i++) if(i!=pos) low[i]=map[pos][i]; for(i=1;i low[j]) { min=low[j]; pos=j; } } if(MAX==min) { return -1; } result+=min; visit[pos]=1; for(j=1;j<=n;j++) { if(visit[j]==0 && low[j]> map[pos][j]) low[j]=map[pos][j]; } } return result; } int main() { int m,a,b,c,k,i; while(cin>>n>>m) { memset(map,MAX,sizeof(map)); for(i=1;i<=m;i++) { cin>>a>>b>>c; if(map[a][b]>c)//居然还有相同边....醉了... { map[a][b]=map[b][a]=c; } } k=prim(); cout<