蒟蒻求助
查看原帖
蒟蒻求助
690827
Noname_min楼主2022/7/22 16:24
#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了,不知道怎么回事

2022/7/22 16:24
加载中...