#include using namespace std; typedef pair pdi; int main() { int N, M, X, Y; cin>>N>>M>>X>>Y; --X; --Y; int p[N], q[N]; for (int i=0; i>p[i]>>q[i]; } vector g[N]; for (int i=0; i>P>>Q; --P; --Q; double dist = sqrt(pow(p[P] - p[Q], 2) + pow(q[P] - q[Q], 2)); g[P].push_back(make_pair(dist, Q)); g[Q].push_back(make_pair(dist, P)); } priority_queue, greater> pq; pq.push(make_pair(0.0, X)); double ans[N]; for (int i=0; i cost + e.first) { ans[e.second] = cost + e.first; pq.push(make_pair(ans[e.second], e.second)); } } } printf("%.9lf\n", ans[Y]); }