36pts WA 求调
查看原帖
36pts WA 求调
1004245
rich_xty楼主2024/9/3 22:06
#include<bits/stdc++.h>
using namespace std;
priority_queue<pair<int,int>,vector<pair<int,int>>,greater<pair<int,int>>> p;
int n,m,s,u,v,a;
int min_dis[500010],mark[500010];
vector<pair<int,int>> g[500010];
int main(){
	ios::sync_with_stdio(0);
	cin.tie(0); cout.tie(0);
	cin>>n>>m>>s;
	for(int i=1;i<=m;i++){
		cin>>u>>v>>a;
		g[u].push_back({v,a});
	}
	for(int i=1;i<=n;i++) min_dis[i]=INT_MAX;
	min_dis[s]=0,p.push({s,0});
	while(!p.empty()){
		int to=p.top().first,dis=p.top().second;
		p.pop();
		if(mark[to]==1) continue;
		mark[to]=1;
		for(auto e:g[to]){
			int tmp=e.second+dis;
			if(tmp<min_dis[e.first]){
				min_dis[e.first]=tmp;
				if(!mark[e.first]){
					p.push({e.first,tmp});
				}
			}
		}
	}
	for(int i=1;i<=n;i++){
		cout<<min_dis[i]<<' ';
	}
	return 0;
}


2024/9/3 22:06
加载中...