90分迪杰斯特拉救助
查看原帖
90分迪杰斯特拉救助
916086
yaoshuen楼主2023/3/11 11:32

求助

#include <bits/stdc++.h>
#define billion 1000000001
using namespace std;
int n,m,s,u,v,w;
struct node{
	int v;
	int w;
};
vector<node>a[100001];
int dis[100001];
bool h[100001];
priority_queue<pair<int,int>,vector<pair<int,int> >,greater<pair<int,int> > >q;
int main(){
	scanf("%d%d%d",&n,&m,&s);
	for(int i=1;i<=n;i++) dis[i]=billion;
	for(int i=1;i<=m;i++){
		scanf("%d%d%d",&u,&v,&w);
		a[u].push_back(node{v,w});
	}
	q.push(make_pair(0,s));
	dis[s]=0;
	while(!q.empty()){
		u=q.top().second;
		q.pop();
		if(h[u]) continue;
		h[u]=1;
		for(int i=0;i<a[u].size();i++){
			v=a[u][i].v;
			w=a[u][i].w;
			if(dis[v]>dis[u]+w){
				dis[v]=dis[u]+w;
				q.push(make_pair(dis[v],v));
			}
		}
	}
	for(int i=1;i<=n;i++){
		printf("%d ",dis[i]);
	}
	return 0;
}

迪杰斯特拉1个测试点WA

2023/3/11 11:32
加载中...