#include using namespace std; #define modulo 1000000007 #define mod(mod_x) ((((long long)mod_x+modulo))%modulo) #define Inf 10000000000000000.0 double eps = 1e-7; int main(){ int N,M,X,Y; cin>>N>>M>>X>>Y; X--;Y--; vector x(N),y(N); for(int i=0;i>x[i]>>y[i]; vector>> E(N,vector>()); for(int i=0;i>u>>v; u--;v--; double d = sqrt(pow(x[u]-x[v],2.0)+pow(y[u]-y[v],2.0)); E[u].emplace_back(v,d); E[v].emplace_back(u,d); } vector dis(N,Inf); vector visited(N,false); priority_queue,vector>,greater>> Q; Q.emplace(0.0,X); dis[X] = 0.0; while(Q.size()!=0){ double D1 = Q.top().first; int from = Q.top().second; Q.pop(); if(visited[from])continue; if(abs(dis[from]-D1)>eps)continue; visited[from]=true; for(int i=0;iD1+D2+eps){ dis[to] = D1+D2; Q.emplace(dis[to],to); } } } cout<