#include<iostream>
#include<cstdio>
#include<math.h>
#include<cstring>
using namespace std;
double f[109][109];
double c[109];
double a[109][4];
double maxx=1e100;
bool b[109];
int main()
{
int m;
scanf("%d",&m);
for(int i=1;i<=m;i++)
for(int j=1;j<=m;j++)
f[i][j]=maxx;
for(int i=1;i<=m;i++)
scanf("%lf%lf",&a[i][1],&a[i][2]);
int n;
scanf("%d",&n);
int x,y;
for(int i=1;i<=n;i++)
{
scanf("%d%d",&x,&y);
f[x][y]=f[y][x]=sqrt(pow((double)(a[x][1]-a[y][1]),2)+pow((double)(a[x][2]-a[y][2]),2));
}
int s,e;
scanf("%d%d",&s,&e);
for(int i=1;i<=m;i++)
c[i]=f[s][i];
b[s]=1;
c[s]=0;
for(int i=1;i<=m-1;i++)
{
double minn=maxx;
int k=0;
for(int j=1;j<=m;j++)
{
if(b[j]==0&&c[j]<minn)
{
minn=c[j];
k=j;
}
}
if(k==0)break;
b[k]=1;
for(int j=1;j<=m;j++)
if(c[k]+f[k][j]<c[j])
c[j]=c[k]+f[k][j];
}
printf("%.2lf",c[e]);
return 0;
}
#include<iostream>
#include<cstdio>
#include<math.h>
#include<cstring>
using namespace std;
int a[1009][3];
double f[1009][1009];
int main()
{
memset(f,0x7f,sizeof(f));
int m;
scanf("%d",&m);
for(int i=1;i<=m;i++)
scanf("%d%d",&a[i][1],&a[i][2]);
int n;
scanf("%d",&n);
int x,y;
for(int i=1;i<=n;i++)
{
scanf("%d%d",&x,&y);
f[x][y]=f[y][x]=sqrt((double)((a[x][1]-a[y][1])*(a[x][1]-a[y][1]))+(double)((a[x][2]-a[y][2])*(a[x][2]-a[y][2])));
}
int p,q;
scanf("%d%d",&p,&q);
for(int k=1;k<=m;k++)
for(int i=1;i<=m;i++)
for(int j=1;j<=m;j++)
if(i!=j&&j!=k&&i!=k&&f[i][k]+f[k][j]<f[i][j])
f[i][j]=f[i][k]+f[k][j];
printf("%.2lf",f[p][q]);
return 0;
}