16pts求助
查看原帖
16pts求助
996206
zcs_楼主2024/7/4 11:23
#include <bits/stdc++.h>
#define INF 1<<30
#define pii pair<int,int>
using namespace std;
int dis[1001000];
vector<pii>vec[1001000];
int n,m,s,vis[1001000];
void dj(){
	for (int i=1;i<=n;i++)dis[i]=INF;
	dis[1]=0;
	priority_queue<pii>q;
	q.push((pii){0,1});
	while(q.size()){
		int x=q.top().second;
		q.pop();
		if (vis[x]){
			continue;	
		}
		vis[x]=1;
		for (int i=0,v,c;i<vec[x].size();i++){
			v=vec[x][i].first;
			c=vec[x][i].second;
			if (dis[v]>dis[x]+c){
				dis[v]=dis[x]+c;
				q.push((pii){dis[v],v});
			}
		}
	}
}
int main(){
	cin>>n>>m>>s;
	for (int i=1,x,y,c;i<=m;i++){
		cin>>x>>y>>c;
		vec[x].push_back((pii){y,c});
	}
	dj();
	for (int i=1;i<=n;i++){
		cout<<dis[i]<<" ";
	}
	return 0;
}
2024/7/4 11:23
加载中...