P1342
#include<bits/stdc++.h>
#define int long long
using namespace std;
int n,m,dis[1000005],v[1000005],cnt;
struct node
{
int w,len;
};
queue<int> r;
vector<node> e[1000005];
vector<node> f[1000005];
void spfa1(int s)
{
for(int i=1;i<=n;i++){
dis[i]=2147483647;
v[i]=0;
}
v[s]=1;
dis[s]=0;
r.push(s);
while(!r.empty()){
int x=r.front();
r.pop();
v[x]=1;
for(int i=0;i<e[x].size();i++){
if(dis[e[x][i].w]>dis[x]+e[x][i].len){
dis[e[x][i].w]=dis[x]+e[x][i].len;
if(v[e[x][i].w]) continue;
r.push(e[x][i].w);
}
}
}
for(int i=2;i<=n;i++){
cnt+=dis[i];
}
return;
}
void spfa2(int s)
{
queue<int> q;
r=q;
for(int i=1;i<=n;i++){
dis[i]=2147483647;
v[i]=0;
}
v[s]=1;
dis[s]=0;
r.push(s);
while(!r.empty()){
int x=r.front();
r.pop();
v[x]=1;
for(int i=0;i<f[x].size();i++){
if(dis[f[x][i].w]>dis[x]+f[x][i].len){
dis[f[x][i].w]=dis[x]+f[x][i].len;
if(v[f[x][i].w]) continue;
r.push(f[x][i].w);
}
}
}
for(int i=2;i<=n;i++){
cnt+=dis[i];
}
return;
}
signed main()
{
int x,y,l;
scanf("%lld%lld",&n,&m);
while(m--){
scanf("%lld%lld%lld",&x,&y,&l);
node h;
h.w=y,h.len=l;
e[x].push_back(h);
h.w=x,h.len=l;
f[y].push_back(h);
}
spfa1(1);
spfa2(1);
printf("%lld",cnt);
return 0;
}