0分求调
查看原帖
0分求调
883038
XYdy_s12楼主2025/2/7 17:03

不知道为什么...还特地去看了讲解...

#include<bits/stdc++.h>
using namespace std;
const int MAXN = 500005;
struct Node{
    int v;
    int w;
};
int n,m,s,d[MAXN],vis[MAXN];
vector<Node> e[MAXN];

void dfs(){
    fill(d,d+n+1,2147483647);
    d[s] = 0;
    for(int i = 1;i < n;i++){
        int u = 0;
        for(int j = 1;j <= n;j++)
            if(!vis[j] && d[u] < d[j])u = j;
        vis[u] = 1;
        for(auto ed : e[u]){
            int v = ed.v,w = ed.w;
            if(d[v] > d[u]+w){
                d[v] = d[u]+w;
            }
        }
        
    }
}

int main(){
    cin>>n>>m>>s;
    for(int i = 0;i < m;i++){
        int a,b,c;
        cin>>a>>b>>c;
        e[a].push_back({b,c});
    }
    dfs();
    for(int i = 0;i < n;i++)cout<<d[i]<<" ";
    return 0;
}
2025/2/7 17:03
加载中...