求大佬,迪杰斯特拉为什么0分
查看原帖
求大佬,迪杰斯特拉为什么0分
383781
UT_MC_wuming楼主2023/6/29 20:12
#include <bits/stdc++.h>
using namespace std;
struct node {
    int v, w;
}temp;
int d[500005],vis[500005];
int n, m, s,u;
vector<node> v[500005];
int main() {
    for (int i = 0; i < 500002; i++)d[i] = 1e9;
    cin >> n >> m >> s;
    for (int i = 0; i <m; i++) {
        cin >> u >> temp.v >> temp.w;
        v[u].push_back(temp);
    }
    d[s] = 0;
    int id=0, minn = 1e9;
    for (int i = 0; i < n; i++) {
        minn = 1e9,id=0;
        for (int j = 1; j <= n; j++) {
            if (minn > d[j] && !vis[j]) {
                id = j;
                minn = d[j];
            }if (id == 0)break;
            vis[id] = 1;
            for (int j = 0; j < v[id].size(); j++) {
                if (v[id][j].w + d[id] < d[v[id][j].v]) {
                    d[v[id][j].v] = d[id] + v[id][j].w;
                }
            }
        }
    }
    for (int i = 1; i <= n; i++) {
        if (d[i] == 1e9)cout << 2147483647 << " ";
        else cout << d[i] << " ";
    }
    return 0;
}
2023/6/29 20:12
加载中...