• 欢迎加入MineBBS QQ讨论群:点击查看所有的官方讨论群
  • 我们将于近期对服务器进行迁移,服务可能中断至多2日。请各位安排好自己的访问计划,造成不便敬请谅解!
  • MineBBS入站考试已经上线!想要成为【正式会员】解锁更多功能吗?快来参与吧!【点我去看】

C语言 【C with STL】单源最短路之dijkstra算法

JiansYuan

【Lv:3】

注册
2020/05/09
消息
19
金粒
4,818.70金粒
呃呃呃
[MD] ```cpp #include <bits/stdc++.h> using namespace std; const int N = 1008600; vector<pair<long long, long long> > g[N]; long long d[N]; bool vis[N]; priority_queue<pair<long long, long long> > q; int main(){ memset(vis, false, sizeof vis); long long n, m, s; scanf("%lld %lld %lld", &n, &m, &s); for(long long i = 1; i <= n; i++) d[i] = 2147483647; for(long long i = 0; i < m; i++) { long long u, v, w; scanf("%lld %lld %lld", &u, &v, &w); g[u].push_back({v, w}); } d[s] = 0; q.push({0, s}); while(!q.empty()) { long long u = q.top().second; q.pop(); if(vis[u]) continue; vis[u] = true; for(size_t i = 0; i < g[u].size(); i++) { long long v = g[u][i].first, w = g[u][i].second; if(d[v] > d[u] + w) { d[v] = d[u] + w; q.push({-d[v], v}); } } } for(long long i = 1 ; i <= n; i++) printf("%lld ", d[i]); return 0; } ``` [/i][/u][/u][/i][/u][/i][/u][/u][/u][/u][/s][/u][/i][/MD]
 

在线会员

  • 妳得惯着她
  • ender的罗小黑
  • 诞中
  • ksandu
  • mcmanzi
  • hanyee
  • qwq220900
  • Klinsky6
后退
顶部 底部