社区讨论

Dijkstra为什么会TLE

P4779【模板】单源最短路径(标准版)参与者 4已保存回复 45

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
45 条
当前快照
1 份
快照标识符
@lo20mzsb
此快照首次捕获于
2023/10/23 06:03
2 年前
此快照最后确认于
2023/11/03 06:27
2 年前
查看原帖
CPP
#include<bits/stdc++.h>
#define int long long
typedef long long ll;
const int MAXN = 1e5 + 5;
const int MAXT = 2e5 + 5;
const int MAXM = 3e5 + 5;
const int MOD = 998244353;
using namespace std; 
int dis[MAXN];
int n,m,s;
vector<pair<int,int> >G[MAXN];
void dijkstra(){
	for(int i=0;i<MAXN;i++) dis[i] = INT_MAX;
	priority_queue<int,vector<int>,greater<int> >q;
	dis[s] = 0;
	q.push(s);
	while(q.size()){
		int now = q.top();
		q.pop();
		for(int i=0;i<G[now].size();i++){
			int u = G[now][i].first;
			int d = G[now][i].second;
			if(dis[u] > dis[now] + d){
				dis[u] = dis[now] + d;
				q.push(u);
			}
		}
	}
	return;
}
signed main(){
	cin >> n >> m >> s; 
	for(int i=0;i<m;i++){
		int u,v,w;
		cin >> u >> v >> w;
		G[u].push_back(make_pair(v,w));
		G[v].push_back(make_pair(u,w));
	}
	dijkstra();
	for(int i=1;i<=n;i++){
		cout << dis[i] << " ";
	}
	return 0;
}

回复

45 条回复,欢迎继续交流。

正在加载回复...