社区讨论
dij求教20分
P4779【模板】单源最短路径(标准版)参与者 2已保存回复 9
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 9 条
- 当前快照
- 1 份
- 快照标识符
- @mi7xqxrt
- 此快照首次捕获于
- 2025/11/21 05:20 4 个月前
- 此快照最后确认于
- 2025/11/21 05:20 4 个月前
CPP
#include <iostream>
#include <cstdio>
#include <queue>
#include <vector>
#define maxn 100001
#define INF 100000001
using namespace std;
int n,m,s;
vector <int > g[maxn],w[maxn];
bool vis[maxn];
int dis[maxn];
void dijkstra(){
priority_queue<int,vector<int>,greater<int> > q;
for (int i = 1;i <= n;++i)dis[i] = INF;
dis[s] = 0;q.push(s);
while (!q.empty()){
int u = q.top();
int cnt = g[u].size();
q.pop();
if (vis[u] == 1)continue;
vis[u] = 1;
for (int i = 0;i < cnt; ++i){
int v = g[u][i],val = w[u][i];
if (dis[v] > dis[u] + val){
dis[v] = dis[u] + val;
if (!vis[v]){
q.push(v);
}
}
}
}
}
signed main(){
ios :: sync_with_stdio(false);
cin >> n >> m >> s;
for (int i = 1;i <= m; ++i){
int u,v,c;
cin >> u >> v >> c;
g[u].push_back(v);w[u].push_back(c);
}
dijkstra();
for (int i = 1;i <= n; ++i){
cout <<dis[i]<<' ';
}
}
回复
共 9 条回复,欢迎继续交流。
正在加载回复...