Papyrus在审判你 • 1年前
#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;
}
评论:
请先登录,才能进行评论