爆零求助
查看原帖
爆零求助
750365
FarmarJohn楼主2023/10/11 19:33
#include <bits/stdc++.h>
using namespace std;
#define MAXN 1000
#define MAXM 100000
int ans=0;
struct edge
{
	int next,to,v;
}e[MAXM];
int h[MAXN],ei=0,n,m,s;
void add(int x,int y,int v)
{
	++ei;
	e[ei].next=h[x];
	h[x]=ei;
	e[ei].to=y;
	e[ei].v=v;
}
int dis[MAXN],u[MAXM];
void spfa(int f)
{
	memset(dis,0x3f,sizeof(dis));
	dis[f]=0;
	queue<int>qu;
	qu.push(f);
	u[f]=1;
	while(!qu.empty())
    {
    	int f1=qu.front();
    	qu.pop();
    	u[f1]=0;
    	for(int i=h[f1];i;i=e[i].next)
		{
    	    int to=e[i].to;
    	    int v=e[i].v;
    	    if(dis[to]>dis[f1]+v)
    	    {
    	    	dis[to]=dis[f1]+v;
    	    	if(u[to]==0)
    	    	{
    	    		qu.push(to);
    	    	    u[to]=1;
				}
			}
		}
	}
}
int main()
{
	cin >> n >> m;
	for(int i=1;i<=m;++i)
	{
		int u,v,w;
		scanf("%d%d%d",&u,&v,&w);
		add(u,v,w);
		add(v,u,w);
		ans+=w;
	}
	ans+=28; 
	spfa(s);
	cout << ans << endl;
    return 0;
}

rt

2023/10/11 19:33
加载中...