#include<bits/stdc++.h>
using namespace std;
struct node{
int id;
double val;
};
int n,m,s,t;
double x[105],y[105],ans=INT_MAX;
bool vis[105];
vector<node>a[1005];
void dfs(int u,double dis)
{
if(dis>ans)return;
if(u==t)
{
ans=dis;
return;
}
for(int i=0;i<a[u].size();i++)
{
int v=a[u][i].id;
double w=a[u][i].val;
if(!vis[v])
{
vis[u]=1;
dfs(v,dis+w);
vis[u]=0;
}
}
}
int main()
{
cin>>n;
for(int i=1;i<=n;i++)
cin>>x[i]>>y[i];
cin>>m;
for(int i=1;i<=m;i++)
{
int p,q;
cin>>p>>q;
double k=sqrt(pow(abs(x[p]-x[q]),2)+pow(abs(y[p]-y[q]),2));
a[p].push_back({q,k});
a[q].push_back({p,k});
}
cin>>s>>t;
dfs(s,0);
cout<<fixed<<setprecision(2)<<ans;
return 0;
}
MLE 怎么办?