关于最短路 || 跪求这是什么迷惑写法??
  • 板块学术版
  • 楼主Furthe77oad
  • 当前回复5
  • 已保存回复5
  • 发布时间2023/2/13 20:25
  • 上次更新2023/10/24 00:52:08
查看原帖
关于最短路 || 跪求这是什么迷惑写法??
383083
Furthe77oad楼主2023/2/13 20:25
#include <bits/stdc++.h>
using namespace std;
typedef pair <int, int> P;
priority_queue <P, vector <P>, greater <P>> q;
struct edge {int to, c;};
vector <edge> G[100005];
int n, m, dist[100005], s;
inline void dij() {
    memset(dist, 0x3f3f3f3f, sizeof(dist));
    dist[s] = 0;
    P st;
    st.first = 0;
    st.second = s;
    q.push(st);
    while (!q.empty()) {
        P fa = q.top();
        q.pop();
        int v = fa.second;
        if (dist[v] < fa.first) continue; // 似乎是这里迷惑
        for (int i = 0; i < G[v].size(); i++) {
            edge e = G[v][i];
            if (dist[e.to] > dist[v] + e.c) {
                dist[e.to] = dist[v] + e.c;
                P nxt;
                nxt.first = dist[e.to];
                nxt.second = e.to;
                q.push(nxt);
            }
        }
    }
}
signed main() {
    ios::sync_with_stdio(false);
    cin.tie(0);
    cin >> n >> m >> s;
    while (m--) {
        int a;
        edge b;
        cin >> a >> b.to >> b.c;
        G[a].push_back(b);
    }
    dij();
    for (int i = 1; i <= n; i++) cout << dist[i] << " ";
    return 0;
}

rt

实测标准版数据可过,

求问

Q1Q1 上述代码中标注的那一句有啥作用?

Q2Q2 这是什么迷惑写法,是否可信?

2023/2/13 20:25
加载中...