#include<bits/stdc++.h>
using namespace std;
const int maxn=105;
const int inf=0x3f3f3f3f;
int x[maxn],y[maxn];
struct node{
int v;
double w;
};
vector<node> E[maxn];
int n,m,s,t;
double dis[maxn];
bool vis[maxn];
void dijkstra(){
memset(dis,0x43,sizeof(dis));
dis[s]=0;
for(int k=1;k<=n;k++){
int u=0;
for(int i=1;i<=n;++i){
if(vis[i]==false&&(u==0||dis[i]<dis[u])){
u=i;
}
vis[u]=true;
for(int i=0;i<E[u].size();i++){
int v=E[u][i].v;
double g=E[u][i].w;
if(vis[v]==false&&dis[v]>dis[u]+g){
dis[v]=dis[u]+g;
}
}
}
}
}
int main(){
cin>>n;
for(int i=1;i<=n;i++){
cin>>x[i]>>y[i];
}
cin>>m;
int k,j;
for(int i=1;i<=m;++i){
cin>>k>>j;
double dd=sqrt((x[k]-x[j])*(x[k]-x[j])+(y[k]-y[j])*(y[k]-y[j]));
E[k].push_back({j,dd});
E[j].push_back({k,dd});
}
cin>>s>>t;
dijkstra();
printf("%.2lf",dis[t]);
}
评测记录 非常奇怪的wa了一个点 请大佬帮忙看看