#include <iostream> #include <bitset> #include <algorithm> #include <vector> #include <map> #include <cstdio> #include <cstring> #include <cmath> #include <cctype> #include <queue> using namespace std; int m,n; int f[7]={0}; struct edge { int v; int u; int w; }e[10]; bool cmpm(const edge &a,const edge &b) { return a.w<b.w; } int find(int x) { if(x!=f[x]) { f[x]=find(f[x]); return f[x]; } else { return x; } } int merge(int u,int v) { int u_root=find(u); int v_root=find(v); if(u_root!=v_root) { f[v_root]=u_root; return 1; } return 0; } int main() { int i,count=0,sum=0; scanf("%d%d",&n,&m); for(i=1;i<=m;i++) { scanf("%d%d%d",&e[i].u,&e[i].v,&e[i].w); } sort(e+1,e+m+1,cmpm); for(i=1;i<=n;i++) { f[i]=i; } for(i=1;i<=m;i++) { if(merge(e[i].u,e[i].v)) { count++; sum=sum+e[i].w; } if(count==n-1) { break; } } printf("%d\n",sum); return 0; }