社区讨论
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 条回复,欢迎继续交流。
正在加载回复...