#include<iostream>#include<cstdio>#include<cstring>#include<algorithm>using namespace std;#define inf 10000000#define maxn 21int m,n;int edge[maxn][maxn],lowcost[maxn],nearvex[maxn];void prim(int u0){ int i,j; int sumweight=0; for(i=1; i<=n; i++) { lowcost[i]=edge[u0][i]; nearvex[i]=u0; } nearvex[u0]=-1; for(i=1; i<n; i++) { int min=inf; int v=-1; for(j=1; j<=n; j++) { if(nearvex[j]!=-1 && lowcost[j]<min) { v=j; min=lowcost[j]; } } if(v!=-1) { cout<<nearvex[v]<<" "<<v<<" "<<lowcost[v]<<endl; nearvex[v]=-1; sumweight+=lowcost[v]; for(j=1; j<=n; j++) { if(nearvex[j]!=-1 && edge[v][j]<lowcost[j]) { lowcost[j]=edge[v][j]; nearvex[j]=v; } } } } cout<<"weight of mst is "<<sumweight<<endl;}int main(){ ios::sync_with_stdio(false); freopen("1.txt","r",stdin); int i,j,w,u,v; cin>>n>>m; memset(edge,0,sizeof(edge)); for(i=1; i<=m; i++) { cin>>u>>v>>w; edge[u][v]=edge[v][u]=w; } for(i=1; i<=n; i++) { for(j=1; j<=n; j++) { if(i==j) edge[i][j]=0; else if(edge[i][j]==0) edge[i][j]=inf; } } prim(1); return 0;}/*7 9 1 2 281 6 102 3 162 7 143 4 124 5 224 7 185 6 255 7 24*/