1 条题解

  • 1
    @ 2025-12-21 22:33:46

    #include<bits/stdc++.h>

    using namespace std;

    const int N=1e4+10;

    struct node{

    int v,w;       
    

    };

    int n,m,s,t;

    vector a[N];

    int dis[N];

    bool f[N];

    int main(){

    cin>>n>>m>>s>>t; 
    
    int u,v,w;
    
    for(int i=1;i<=m;i++){
    
        cin>>u>>v>>w;
    
        a[u].push_back({v,w});
    
         a[v].push_back({u,w});
    
    }
    
    
    memset(dis,0x3f,sizeof(dis));
    
    dis[s]=0;
    
    for(int i=1;i<=n;i++){
    
        int mi=-1;
    
        for(int j=1;j<=n;j++){
    
            if(f[j]==false&&(mi==-1||dis[j]<dis[mi])){
    
                mi=j;
    
            }
    
        }
        
        f[mi]=true;
    
        for(int j=0;j<a[mi].size();j++){
    
            if(f[a[mi][j].v]==false&&dis[mi]+a[mi][j].w<dis[a[mi][j].v]){
    
                dis[a[mi][j].v]=dis[mi]+a[mi][j].w; 
    
            }
    
        }
    
    }
    
    cout<<dis[t];
    
    return 0;
    

    }

    信息

    ID
    871
    时间
    1000ms
    内存
    256MiB
    难度
    10
    标签
    递交数
    8
    已通过
    1
    上传者