```cpp
#include<cstdio>
int n,m,k=0,ans=0;
int a[200000][4];
int f[200000];
void kp(int l,int r)
{
int i=l,j=r,mid=a[(i+j)/2][3];
while(i<=j)
{
while(a[i][3]<mid) i++;
while(a[j][3]>mid) j--;
if(i<=j)
{
int t;
t=a[i][1];a[i][1]=a[j][1];a[j][1]=t;
t=a[i][2];a[i][2]=a[j][2];a[j][2]=t;
t=a[i][3];a[i][3]=a[j][3];a[j][3]=t;
i++;
j--;
}
}
if(l<j) kp(l,j);
if(i<r) kp(i,r);
}
int find(int x)
{
if(f[x]==x) return x; else return f[x]=find(f[x]);
return f[x];
}
void go(int x,int y)
{
int t1=find(x),t2=find(y);
if(t1!=t2) f[t2]=t1;
}
int main()
{
scanf("%d %d",&n,&m);
for(int i=1;i<=m;i++)
{
scanf("%d %d %d",&a[i][1],&a[i][2],&a[i][3]);
f[i]=i;
}
kp(1,m);
for(int i=1;i<=m;i++)
{
if(find(a[i][1])!=find(a[i][2]))
{
go(a[i][1],a[i][2]);
ans=ans+a[i][3];
k++;
}
if(k==n-1)
{
printf("%d",ans);
return 0;
}
}
printf("orz");
}
```
by Mark_ZZY @ 2017-03-25 10:16:01