70pts WA 求调
查看原帖
70pts WA 求调
1211668
WMY_楼主2024/12/8 10:22
#include <queue>
#include <iostream>

using namespace std;

#define N 10005

int n, m, s;

struct E {
    int to, d, nxt;
} e[N * 0xF];
int h[N * 0xF];
int tot;
#define LINK(u, v, w) e[++tot] = E{ v, w, h[u] }, h[u] = tot;

int vis[N];
queue<int> q;
int dis[N];

int main() {
    cin >> n >> m >> s;
    for (int i = 1; i <= m; i++) {
        int u, v, w;
        cin >> u >> v >> w;
        LINK(u, v, w);
    }
    for (int i = 1; i <= n; i++)
        dis[i] = 0x7FFFFFFF;
    dis[s] = 0;
    q.push(s);
    vis[s] = 1;
    while (!q.empty()) {
        int u = q.front(); q.pop();
        vis[u] = 0;
        for (int i = h[u]; i; i = e[i].nxt) {
            int v = e[i].to, w = e[i].d;
            if (dis[u] + w < dis[v]) {
                dis[v] = dis[u] + w; 
                if (vis[v] == 0) {
                    q.push(v);
                    vis[v] = 1;
                }
            }
        }
    }
    for (int i = 1; i <= n; i++)
        cout << dis[i] << " ";
    puts("");

    return 0;
}
2024/12/8 10:22
加载中...