#include<bits/stdc++.h>
using namespace std;
const int N=1e5+5;
int h[N],cnt,nxt[N],to[N],d[N],w[N],vis[N],n,m,a[N],b[N],c[N];
int ans=0;
priority_queue<pair<int,int> >q;
void add(int a,int b,int c)
{
to[++cnt]=b;nxt[cnt]=h[a];h[a]=cnt;w[cnt]=c;
}
void dijkstra()
{
memset(vis,0,sizeof(vis));
memset(d,0x3f,sizeof(d));
d[1]=0;
q.push(make_pair(0,1));
while(q.size())
{
int u=q.top().second;q.pop();
if(vis[u]) continue;
vis[u]=1;
for(int i=h[u];i;i=nxt[i])
{
int v=to[i];
if(d[v]>d[u]+w[i])
{
d[v]=d[u]+w[i];
q.push(make_pair(-d[v],v));
}
}
}
}
int main()
{
cin>>n>>m;
for(int i=1;i<=m;i++)
{
scanf("%d%d%d",&a[i],&b[i],&c[i]);
add(a[i],b[i],c[i]);
}
dijkstra();
for(int i=1;i<=n;i++) ans+=d[i];
memset(h,0,sizeof(h));
memset(nxt,0,sizeof(nxt));
memset(w,0,sizeof(w));
memset(to,0,sizeof(to));
for(int i=1;i<=m;i++)
{
add(b[i],a[i],c[i]);
}
dijkstra();
for(int i=1;i<=n;i++)ans+=d[i];
cout<<ans;
return 0;
}
七十分求助,re了,不知道怎么回事