/*
SPFA
*/
#include<stdio.h>
#include<queue>
using namespace std;
#define nMax 1000050
#define eMax 10000050
#define inf 1000000050
__int64 sum,dist[nMax];
int vis[nMax],p,q,tou[nMax],re_tou[nMax];
struct node
{
int v,w,next;
}e[nMax],re_e[nMax];
void init()
{
int i;
for(i=1;i<=p;i++)
{
dist[i]=inf;
vis[i]=0;
}
}
void spfa(node bian[],int head[])
{
init();
vis[1]=1;
queue<int>q;
q.push(1);
int cur,i;
dist[1]=0;
while(!q.empty())
{
cur=q.front();
q.pop();
vis[cur]=0;
int p=head[cur];
while(p)
{
int v=bian[p].v,w=bian[p].w;
if(dist[v]>dist[cur]+w)
{
dist[v]=dist[cur]+w;
if(!vis[v])
{
vis[v]=1;
q.push(v);
}
}
p=bian[p].next;
}
}
for(i=1;i<=p;i++)
sum+=dist[i];
}
int main()
{
int t,i,j,u,v,w;
scanf("%d",&t);
while(t--)
{
scanf("%d%d",&p,&q);
for(i=1;i<=p;i++)
tou[i]=re_tou[i]=0;
for(i=1;i<=q;i++)
{
scanf("%d%d%d",&u,&v,&w);
e[i].v=v;
e[i].w=w;
e[i].next=tou[u];
tou[u]=i;
re_e[i].v=u;
re_e[i].w=w;
re_e[i].next=re_tou[v];
re_tou[v]=i;
}
sum=0;
spfa(e,tou);
spfa(re_e,re_tou);
printf("%I64d\n",sum);
}
return 0;
}