djkstra 0分re求助
查看原帖
djkstra 0分re求助
1196347
jh13h楼主2025/1/11 15:47
#include<bits/stdc++.h>
using namespace std;
#define PII pair<int,int>
vector<PII>pos[10010];
int ys,dis[10100],vis[10100],n,m,xs;
queue<int>djstl;
int bfs(int x){
    vis[x]=1;
	djstl.push(x);
	while(!djstl.empty()){
		int go=djstl.back();
		djstl.pop();
		for(auto i:pos[go]){
			int to=i.first,sp=i.second;
			if(dis[to]>dis[go]+sp){
				dis[to]=dis[go]+sp;
				djstl.push(to);
			}
		}
	}
}
int main(){
	cin>>n>>m>>xs;
	for(int i=0;i<m;i++){
		int x,y,z;
		cin>>x>>y>>z;
		pos[x].push_back({y,z});
	}memset(dis,INT_MAX,sizeof dis);
	dis[xs]=0;
	bfs(xs);
	for(int i=1;i<=n;i++){
		cout<<dis[i]<<' ';
	}
} 
2025/1/11 15:47
加载中...