找回密码
 立即注册
首页 业界区 安全 最短路算法 dijkstra 从认识到熟练掌握

最短路算法 dijkstra 从认识到熟练掌握

米嘉怡 2025-6-1 21:25:00
参考资料:

(这里鸣谢代码随想录的分享)
Dijkstra算法,你的最短路来了!(认识dijkstra)
Dijkstra算法,求最短路还能更快!(堆优化版)
个人总结的代码

下面的代码可以AC P4779 【模板】单源最短路径(标准版) - 洛谷
相信你通过上面的参考资料或者下面的代码总结属于你自己的dijkstra
[code]#include     using namespace std;  class Dist{  public:      int u;      int d;      Dist(int u_, int d_):u(u_),d(d_){}      bool operator < (const Dist &other) const{          return d > other.d;// 小顶堆      }  };  void solve() {      int n, m, start; // n为顶点 m为边数      cin >> n >> m >> start;      priority_queue q;      vector g[n + 1];      for (int i = 0; i < m; ++i) {          int u, v, w;          cin >> u >> v >> w;          g.push_back(Dist(v, w));      }        vector vis(n + 1, false);      vector dis(n + 1, INT_MAX);        q.push(Dist(start, 0));      dis[start] = 0;      while (!q.empty()) {          Dist cur = q.top();          q.pop();          int u = cur.u;          if(vis) continue;          vis = true;          for(auto &next:g){              int v = next.u;              if(dis[v] > dis + next.d){                  dis[v] = dis + next.d;                  q.push(Dist(v, dis[v]));              }          }      }      for(int i = 1;i
您需要登录后才可以回帖 登录 | 立即注册