1 条题解

  • 0
    @ 2025-6-22 14:53:14
    #include<bits/stdc++.h>
    using namespace std;
    const int INF=0x3f3f3f3f;
    int d[205][205];
    int n,m,q;
    void Floyd(){
        for(int k=1;k<=n;k++){
            for(int i=1;i<=n;i++){
                for(int j=1;j<=n;j++){
                    if(d[i][k]<INF&&d[k][j]<INF){
                        d[i][j]=min(d[i][j],d[i][k]+d[k][j]);
                    }
                }
            }
        }
    }
    int main(){
        cin>>n>>m>>q;
        memset(d,0x3f,sizeof(d));
        for(int i=1;i<=n;i++) d[i][i]=0;
        for(int i=0;i<m;i++){
            int u,v,w;
            cin>>u>>v>>w;
            d[u][v]=min(d[u][v],w);
        }
        Floyd();
        for(int i=0;i<q;i++){
            int x,y;
            cin>>x>>y;
            if(d[x][y]==INF) cout<<"impossible"<<endl;
            else cout<<d[x][y]<<endl;
        }
        return 0;
    }
    
    • 1

    信息

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