标准过了弱化90求救
查看原帖
标准过了弱化90求救
954694
cmpt_xiaoxiao楼主2025/8/4 10:15
#include<iostream>
#include<vector>
#include<queue>
using namespace std;
struct node{
	int v,w;
};
int n,m,s;
vector<node>edge[100001];
struct node1{
	int idx,dis,vis;
	bool operator<(const node1 &xd) const{
		return dis>xd.dis;
	}
}vtxs[100001];
void dij(int s){
	priority_queue<node1>q;
	q.push({s,0,0});
	vtxs[s].dis=0;
	while(!q.empty()){
		int u=q.top().idx;
		q.pop();
		if(vtxs[u].vis) continue;
		vtxs[u].vis=1;
		for(node x:edge[u]){
			int v=x.v;
			int w=x.w;
			if(!vtxs[v].vis&&vtxs[v].dis>vtxs[u].dis+w){
				vtxs[v].dis=vtxs[u].dis+w;
				q.push({v,vtxs[v].dis});
			}
		} 
	}
}
int main(){
	cin>>n>>m>>s;
	for(int i=1;i<=m;i++){
		int u,v,w;
		cin>>u>>v>>w;
		edge[u].push_back({v,w});
	}
	for(int i=1;i<=n;i++){
		vtxs[i].dis=0x3f3f3f3f;
	}
	dij(s);
	for(int i=1;i<=n;i++){
		cout<<vtxs[i].dis<<" ";
	}
	return 0;
}
2025/8/4 10:15
加载中...