dij(无堆优化)90tips WA#1救命
查看原帖
dij(无堆优化)90tips WA#1救命
1375618
hyc13969548198楼主2024/12/4 21:53
#include<bits/stdc++.h>
using namespace std; 
struct edge{
	int to;
	int w;
};
long long d[100010];bool in[100010]; 
vector<edge> e[100010];

int main(){
	int n,m,s;
	cin >> n >> m >> s;
	for(int i = 1; i <= n; i++){
		d[i] = (1LL<<31) - 1;
	}
	for(int i = 1; i < m; i++){
		int u,v,w;
		cin >> u >> v >> w;
		e[u].push_back((edge){v,w});
	}
	d[s] = 0;
	for(int t = 1; t <= n; t++){
		int x;
		long long mi=1LL<<31;
		for(int i = 1; i <= n; i++){
			if(!in[i]&&d[i] < mi){
				mi = d[i];
				x = i;
			}
		}
		in[x] = true;
		for(int j = 0; j < e[x].size(); j++){
			int v = e[x][j].to,w = e[x][j].w;
			if(d[x] + w < d[v]){
				d[v] = d[x] + w;
			}
		}
	} 
	for(int i =  1; i <= n; i++){
		cout <<d[i]  << " ";
	}
	return 0;
}

求助

2024/12/4 21:53
加载中...