#include<bits/stdc++.h>
using namespace std;
int n,m;
int x,y;
int a[101][3];
double b[101][101];
int s,t;
int main(){
cin>>n;
memset(b,0x7f,sizeof(b));
for (int i=1;i<=n;i++){
cin>>a[i][1];
cin>>a[i][2];
}
cin>>m;
for (int i=1;i<=m;i++){
cin>>x>>y;
b[x][y]=b[y][x]=sqrt(pow((a[x][1]-a[y][1]),2)+pow((a[x][2]-a[y][2]),2));
}
for (int k=1;k<=n;k++){
for (int i=1;i<=n;i++){
for(int j=1;j<=n;j++){
if (b[i][j]>b[i][k]+b[k][j]){
b[i][j]=b[i][k]+b[k][j];
}
}
}
}
cin>>s>>t;
printf("%.2lf",b[s][t]);
}
1342:【例4-1】最短路径问题
最新推荐文章于 2024-08-14 17:18:35 发布