#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include /*                      __,.二ニ==-  ニ.、_.                                      .,..‐ ⌒            ``'ァ-ニ、.                              ィ'´.                      ´丶.、                        .,ィ'´                            `.x、..           ..        /.                                、\.                 .ン′.                                  ¬`""冖ーミト.        ,r′.                                     .ヘ、    `       ツ                                         `、....         ./´                                          ヘ      .....  /.                                            .〉.       ´/..                                             .l       ィ                         .                     f..    .. .f ,d.                 l   ′ 」  ,.             ト     !    . 〕../.f..                 ′ ..  |  .}             |      |.     .!./..f..                 /  !- ナ丶п冖т    ノー- . 〕      |.     |メ |               | j      ,  ┌. |〈.   л`.   /|..     ┤,..   ...「...|.      |  ´      l. |  j.L......ュ.L_└ヽ_|Y.  メムw ょ |  j.:   |  ̄  .  |.               т〕<.ィ冖T冖.. г‐ `、 `, /┴¬..г ̄|.. .′  |    ...  |        ...       ),|.. `  リ 「_ノ.||    ` V  |!{,「ll ´.」.     卜    .  |.」      ′        ヽ    └++〃..        ルwf  カz′.   |.       |..〕                                      「     .|        .l.|.                                      ′.     |     .   .〕..               `!        _.....ー:''         」 ´    λ.       _「.    ,            ┐_,、`~‐''"´                ィ   .、 ヘ、      f      :__..,二ュ.-i―'''^~´                       、\イ ヘ.`x  .  /      {                                     j    .~^   、/       't..                                   丿..       .../.       ,x┐..                                 ∠∫       :^.       /   ̄冖ー=zzュ┌ー―--   ∟,二..._.       _,、.-ー.'l+~. .l`.      .       У.         ⌒冖‐-=._.. l「.「      ´ ̄」了  .,、-''^   〉 ヽ_           _/.                   ̄~'.ー-=.、_,..usァ.ー''"      {   \´        _ヰl'¬―- 、_                                 (    .\ */ using namespace std; using ll = long long int; using ull = unsigned long long int; ll const MOD = 1000000007; ll const INF = (long long int)1 << 61; ll mypow(ll x,ll n,ll mod = MOD){ ll ret = 1; while(n > 0){ if(n&1){ ret = (ret*x)%mod; } x = (x*x)%mod; n >>= 1; } return ret; } ll mygcd(ll a,ll b){ if(b == 0)return a; return mygcd(b,a%b); } ll twoPow(ll shiftNum){ return (1LL << (shiftNum - 1)); } int main(){ cin.tie(0); ios::sync_with_stdio(false); ll n,m; cin >> n >> m; ll x,y; cin >> x >> y; vector a(n+1),b(n+1); for(int i = 1; i <= n; i++){ cin >> a[i] >> b[i]; } vector> edge(n+1); for(int i = 0; i < m; i++){ int p,q; cin >> p >> q; edge[p].push_back(q); edge[q].push_back(p); } priority_queue,vector>,greater>> pq; vector v(n+1,1e9); vector used(n+1,false); v[x] = 0.0; pq.push(make_pair(0.0,x)); while(!pq.empty()){ auto tmp = pq.top(); pq.pop(); if(used[tmp.second])continue; used[tmp.second] = true; for(auto e: edge[tmp.second]){ if(!used[e] && v[tmp.second] + sqrt(abs(a[tmp.second] - a[e])*abs(a[tmp.second] - a[e]) + abs(b[tmp.second] - b[e])*abs(b[tmp.second] - b[e]) ) < v[e]){ v[e] = v[tmp.second] + sqrt(abs(a[tmp.second] - a[e])*abs(a[tmp.second] - a[e]) + abs(b[tmp.second] - b[e])*abs(b[tmp.second] - b[e]) ); pq.push(make_pair(v[e],e)); } } } cout << setprecision(17) << fixed; cout << v[y] << endl; return 0; }