1 条题解

  • 0
    @ 2025-4-16 22:17:08

    SPFA呀哥们

    #include<bits/stdc++.h>
    using namespace std;
    struct edge{
        int v;
        int x;
    };
    vector<edge>e[1000005];
    int dis[1000005];
    bool inq[1000005];
    int n,m,s;
    void SPFA(int s){
        fill(dis+1,dis+n+1,(1<<31)-1);
        queue<int>q;
        dis[s]=0;
        inq[s]=true;
        q.push(s);
        while(!q.empty()){
            int u=q.front();
            q.pop();
            inq[u]=false;
            for(int i=0;i<e[u].size();i++){
                if(e[u][i].x+dis[u]<dis[e[u][i].v]){
                    dis[e[u][i].v]=e[u][i].x+dis[u];
                    if(!inq[e[u][i].v]){
                        q.push(e[u][i].v);
                    }
                    inq[e[u][i].v]=true;
                }
            }
        }
    }
    signed main(){
        cin>>n>>m;
        for(int i=1;i<=m;i++){
            int u,v,x;
            cin>>u>>v>>x;
            e[u].push_back({v,x});
            e[v].push_back({u,x});
        }
        SPFA(1);
        cout<<dis[n];
        return 0;
    }
    

    信息

    ID
    7050
    时间
    1000ms
    内存
    125MiB
    难度
    3
    标签
    递交数
    1
    已通过
    1
    上传者