#include<bits/stdc++.h>
using namespace std;
long long ans=0;
int n,m,cnt,x[100005],y[100005],z[100005],head[100005],dis[100005],vis[100005];
priority_queue <pair <long long,int> >Q;
struct newt
{
int to;
int next;
int val;
}
edge[1000005];
void addedge(int u,int v,int w)
{
edge[++cnt].next=head[u];
head[u]=cnt;
edge[cnt].to=v;
edge[cnt].val=w;
}
void dijstla(int s)
{
memset(dis,0x3f,sizeof(dis));
dis[s]=0;
Q.push (make_pair(0,s));
while (!Q.empty())
{
int now=Q.top().second;
Q.pop();
if (vis[now]) continue;
vis[now]=1;
for (int i=head[now];i;i=edge[i].next)
{
int v=edge[i].to;
if (dis[v]>edge[i].val+dis[now])
{
dis[v]=edge[i].val+dis[now];
Q.push (make_pair(dis[v],v));
}
}
}
for (int i=1;i<=m;i++)
{
ans+=dis[i];
}
}
int main()
{
cin>>m>>n;
for (int i=1;i<=n;i++)
{
cin>>x[i]>>y[i]>>z[i];
addedge(x[i],y[i],z[i]);
}
dijstla(1);
memset(vis,0,sizeof(vis));
memset(head,0,sizeof(head));
memset(edge,0,sizeof(edge));
for (int i=1;i<=n;i++)
{
addedge(y[i],x[i],z[i]);
}
dijstla(1);
cout<<ans;
return 0;
}
样例过了,为什么全wa,QWQ