#include <iostream>
using namespace std;
struct edge{
int u, v;
int w;
};
struct edge a[100];
int f[100];
int n, m;
struct edge tmp;
void quickSort(int left, int right){
if(left>right){
return ;
}else {
int i = left;
int j = right;
while(i < j){
while(a[j].w >= a[left].w && i < j){
j--;
}
while(a[i].w <= a[left].w && i < j){
i++;
}
if(i != j){
tmp = a[i];
a[i] = a[j];
a[j] = tmp;
}
}
tmp = a[left];
a[left] = a[i];
a[i] = tmp;
quickSort(left, i-1);
quickSort(i+1, right);
return ;
}
}
int getf(int v){
if(v == f[v]){
return v;
}
f[v] = getf(f[v]);
return f[v];
}
int merge(int u, int v){
int t1 = getf(u);
int t2 = getf(v);
if(t1 != t2){
f[t2] = t1;
return 1;
}else {
return 0;
}
}
int main(){
cin>>n>>m;
for(int i=1; i<=m; i++){
cin>>a[i].u>>a[i].v>>a[i].w;
}
quickSort(1, m);
for(int i=1; i<=n; i++){
f[i] = i;
}
int cnt = 0;
int sum = 0;
for(int i=1; i<=m; i++){
if( merge(a[i].u, a[i].v) ){
cnt++;
sum += a[i].w;
}
if(cnt == n-1){
break;
}
}
cout<<"cost:"<<sum<<endl;
return 0;
}
#include <iostream>
using namespace std;
int a[100][100];
const int INF = 0x3f3f3f3f;
int book[100];
int dis[100];
int cnt = 0;
int sum = 0;
int main(){
int n, m;
cin>>n>>m;
int tx, ty, d;
for(int i=1; i<+n; i++){
for(int j=1; j<=n; j++){
if(i == j){
a[i][j] = 0;
}else {
a[i][j] = INF;
}
}
}
for(int i=1; i<=m; i++){
cin>>tx>>ty>>d;
a[tx][ty] = d;
a[ty][tx] = d;
}
for(int i=1; i<=n; i++){
dis[i] = a[1][i];
}
book[1] = 1;
cnt++;
int t;
while(cnt < n){
int mmin = INF;
for(int i=1; i<=n; i++){
if(dis[i] < mmin && book[i] == 0){
mmin = dis[i];
t = i;
}
}
book[t] = 1;
sum += dis[t];
cnt++;
for(int i=1; i<=n; i++){
if(book[i] == 0 && dis[i] > a[t][i]){
dis[i] = a[t][i];
}
}
}
cout<<"sum:"<<sum<<endl;
return 0;
}