#include <bits/stdc++.h>
using namespace std;
int n, m, s, t;
struct node{
int x, y;
}a[101];
double dis[101][101];
int main(){
cin >> n;
for(int i = 1;i <= n;i++){
cin >> a[i].x >> a[i].y;
}
cin >> m;
memset(dis, 0x7f, sizeof(dis));
for(int i = 1;i <= m;i++){
int xx, yy;
cin >> xx >> yy;
dis[xx][yy] = sqrt((double(a[xx].x - a[yy].x)) * (double(a[xx].x - a[yy].x)) + (double(a[xx].y - a[yy].y)) * (double(a[xx].y - a[yy].y)));
}
cin >> s >> t;
for(int k = 1;k <= n;k++){
for(int i = 1;i <= n;i++){
for(int j = 1;j <= n;j++){
if((i != j) && (j != k) && (k != i) && (dis[i][j] > dis[i][k] + dis[k][j])){
dis[i][j] = dis[i][k] + dis[k][j];
}
}
}
}
printf("%.2lf", dis[s][t]);
return 0;
}
只有40分(WA#3,#4,#5)求助