关于Dijkstra 算法
  • 板块学术版
  • 楼主osky123456
  • 当前回复3
  • 已保存回复3
  • 发布时间2022/1/21 18:30
  • 上次更新2023/10/28 11:38:35
查看原帖
关于Dijkstra 算法
467616
osky123456楼主2022/1/21 18:30
struct edge {
  int v, w;
};
struct node {
  int dis, u;
  bool operator>(const node& a) const { return dis > a.dis; }
};
vector<edge> e[maxn];
int dis[maxn], vis[maxn];
priority_queue<node, vector<node>, greater<node> > q;
void dijkstra(int n, int s) {
  memset(dis, 63, sizeof(dis));
  dis[s] = 0;
  q.push({0, s});
  while (!q.empty()) {
    int u = q.top().u;
    q.pop();
    if (vis[u]) continue;
    vis[u] = 1;
    for (auto ed : e[u]) {
      int v = ed.v, w = ed.w;
      if (dis[v] > dis[u] + w) {
        dis[v] = dis[u] + w;
        q.push({dis[v], v});
      }
    }
  }
}

请问定义node的定义中

bool operator>(const node& a) const { return dis > a.dis; }

什么意思啊,蒟蒻真不会

结构体没学好

2022/1/21 18:30
加载中...