#include
#include
#include
#include
#include
#define For(i,j,k) for (i=j;i<=k;i++)
using namespace std;
const int dmax=1001000,INF=1000000000;
int begin[dmax],next[dmax],to[dmax],w[dmax];
int begin1[dmax],next1[dmax],to1[dmax],w1[dmax];
int q[dmax*10],d[dmax];
bool p[dmax];
int e,e1,m,n;
void add(int x,int y,int z){
to[++e]=y;
w[e]=z;
next[e]=begin[x];
begin[x]=e;
}
void add1(int x,int y,int z){
to1[++e1]=y;
w1[e1]=z;
next1[e1]=begin1[x];
begin1[x]=e1;
}
int reload(){
int x,y,z,i,j,k;
For(i,1,m)
begin[i]=begin1[i]=0;
For(i,1,m){
scanf("%d%d%d",&x,&y,&z);
add(x,y,z);
add1(y,x,z);
}
}
int main(){
int i,j,k,f,l,T;
long long ans;
scanf("%d",&T);
while (T--){
scanf("%d%d",&n,&m);
reload();
For(i,1,n){
d[i]=INF;
p[i]=0;
}
ans=0;
q[1]=1,p[1]=1,d[1]=0;
f=0,l=1;
while (f0;i=next[i])
if (d[to[i]]>d[k]+w[i]){
d[to[i]]=d[k]+w[i];
if (!p[to[i]]){
q[++l]=to[i];
p[to[i]]=1;
}
}
}
For(i,2,n)
ans+=d[i];
For(i,1,n){
d[i]=INF;
p[i]=0;
}
q[1]=1,p[1]=1,d[1]=0;
f=0,l=1;
while (f0;i=next1[i])
if (d[to1[i]]>d[k]+w1[i]){
d[to1[i]]=d[k]+w1[i];
if (!p[to1[i]]){
q[++l]=to1[i];
p[to1[i]]=1;
}
}
}
For(i,2,n)
ans+=d[i];
printf("%I64d\n",ans);
}
return 0;
}