Floyd我爱你

Papyrus在审判你  •  11个月前


#include<bits/stdc++.h>
using namespace std;
int n,m,d;
int a[200][200],aft[200][200];
int main(){
    cin>>n>>m;
    memset(aft,0x3f,sizeof(aft));
    for(int i=1;i<=m;i++){
        int x,y,z;
        cin>>x>>y>>z;
        a[x][y]=z;
        a[y][x]=z;
        aft[x][y]=0;
        aft[y][x]=0;
    }
    cin>>d;
    for(int i=1;i<=d;i++){
        int x,y;
        cin>>x>>y;
        aft[x][y]=a[x][y];
        aft[y][x]=a[x][y];
    }
    for(int k=1;k<=n;k++){
        for(int i=1;i<=n;i++){
            for(int j=1;j<=n;j++){
                if(i!=k&&i!=j&&aft[i][j]>aft[i][k]+aft[k][j]){
                    aft[i][j]=aft[i][k]+aft[k][j];
                }
            }
        }
    }
    int A,B;
    cin>>A>>B;
    cout<<aft[A][B]<<endl;
    return 0;
}

评论:

请先登录,才能进行评论