rt,
#include<cstdio>
#include<cmath>
#define min(a,b) ((a)<(b)?(a):(b))
#define max(a,b) ((a)>(b)?(a):(b))
#define INF 1145141919810.
#define N 114
#define M 2024
int n,m,x[N],y[N],u[M],v[M];
double w[M],dis[N];
double dist(int a,int b)
{
return sqrt((x[a]-x[b])*(x[a]-x[b])+(y[a]-y[b])*(y[a]-y[b]));
}
void bellman_ford()
{
for(register int i=0;i^n;++i)
for(register int j=0;j^(m<<1);++j)
dis[v[j]]=min(dis[v[j]],dis[u[j]]+w[j]);
}
int main()
{
scanf("%d",&n);
for(register int i=0;i^n;++i)
scanf("%d%d",x+i,y+i);
scanf("%d",&m);
for(register int i=0;i^m;++i)
{
scanf("%d%d",u+i,v+i);
--u[i],--v[i];
w[i]=dist(u[i],v[i]);
u[m+i]=v[i],v[m+i]=u[i],w[m+i]=w[i];
}
for(register int i=1;i^n;++i)
dis[i]=INF;
bellman_ford();
if(dis[n-1]!=INF)printf("%.2lf",dis[n-1]);
return 0;
}
测评记录,感谢帮忙!