家人们救救孩子吧
查看原帖
家人们救救孩子吧
1035321
HSH_starlight楼主2024/7/13 18:59

不知道为什么不对

#include<bits/stdc++.h>

using namespace std;

bool vis[200010];
long long n,m,s,u,v,w,d[200005];
struct node{
	int to,w;
};
vector<node>g[200005];
priority_queue<pair<int,int> ,vector<pair<int,int> >,greater<pair<int,int> > >q;

void dejsktra()
{
	d[s]=0;
	q.push(make_pair(0,s));
	while(!vis[u])
	{
		int u=q.top().second;
		vis[u]=1;
		for(int i=0;i<g[u].size();i++)
		{
			int v=g[u][i].to,w=g[u][i].w;
			if(!vis[v] && d[v]>d[u]+w)
			{
				d[v]=d[u]+w;
				q.push(make_pair(d[v],v));
			}
		}
	}
}

int main()
{
	memset(d,0x3f,sizeof(d));
	scanf("%lld%lld%lld", &n,&m,&s);
	for(int i=1;i<=m;i++)
	{
		scanf("%lld%lld%lld",&u,&v,&w);
		g[u].push_back(node{v,w});
	}
	dejsktra();
	for(int i=1;i<=n;i++)
	{
		printf("%lld ", d[i]);
	}
	return 0;
}
2024/7/13 18:59
加载中...