1 #include<string.h>
2 #include<stdio.h>
3 #include<algorithm>
4 using namespace std;
5
6
7 struct edg{
8 int x ;
9 int y ;
10 int len;
11 }a[200000];
12 int flag[200000];
13 int cmp (edg aa ,edg bb){
14 return aa.len<bb.len;
15 }
16
17 int find(int pot){
18 if(flag[pot] == -1){
19 return pot;
20 }
21 else{
22 return flag[pot] = find(flag[pot]);
23 }
24 }
25 void Union(int p1 , int p2){
26 flag[find(p2)] = find(p1);
27 }
28
29 int add(edg t){
30 // printf("t.x t.y %d %d\n",t.x,t.y);
31 if( find(t.x) != find(t.y)){
32 Union(t.x,t.y);
33 // printf("f.x f.y %d %d\n",flag[t.x],flag[t.y]);
34 return t.len;
35 }
36 else{
37 return 0;
38 }
39 }
40
41 int n , m;
42 int main(){
43 while(1){
44 scanf("%d%d",&n,&m);
45 int sum1 = 0;
46 if(n == m && m == 0) break;
47 memset(flag,-1,sizeof(flag));
48 for(int i = 0 ; i < m ; i++){
49 scanf("%d%d%d",&a[i].x,&a[i].y,&a[i].len);
50 sum1 += a[i].len;
51 }
52 sort(a,a+m,cmp);
53 int ans = 0;
54 int sum = 0;
55 for(int i = 0 ; i < m ; i++){
56 if(ans == n+1 ) break;
57 // printf("ans a[i] %d %d %d\n",a[i].x,a[i].y,a[i].len);
58 int now = add(a[i]);
59 if(now){
60 sum += now;
61 ans++;
62 }
63 }
64 printf("%d\n",sum1-sum);
65 }
66 return 0;
67 }
68