//Accepted    504 KB    16 ms
 //spfa最短路
 //把n个地铁站作为n个顶点,边权为从一个站到另一个站的时间
 //注意:地铁在相邻的两站之间是直线行驶,但其他的就不是了
 #include <cstdio>
 #include <cstring>
 #include <iostream>
 #include <queue>
 #include <cmath>
 #include <algorithm>
 using namespace std;
 /**
   * This is a documentation comment block
   * 如果有一天你坚持不下去了,就想想你为什么走到这儿!
   * @authr songt
   */
 ;
 const double inf = 1000000000000000000.0;
 double x[imax_n];
 double y[imax_n];
 double a[imax_n][imax_n];
 double dis[imax_n];
 bool vis[imax_n];
 int n;
 double getDis(double x1,double y1,double x2,double y2)
 {
     return sqrt((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2));
 }
 void init()
 {
     ;i<=n;i++)
     {
         ;j<=n;j++)
         {
             )
             {
                 a[i][j]=getDis(x[i],y[i],x[j],y[j])*;
                 //printf("%d %d ==> %d %d\n",x[i],y[i],x[j],y[j]);
             }
         }
     }
 }
 bool relax(int u,int v,double c)
 {
     )
     {
         dis[v]=dis[u]+c;
         return true;
     }
     return false;
 }
 queue<int > q;
 bool spfa(int src)
 {
     while (!q.empty()) q.pop();
     ;i<=n;i++)
     dis[i]=inf;
     dis[src]=;
     memset(vis,,sizeof(vis));
     q.push(src);
     vis[src]=true;
     while (!q.empty())
     {
         int pre=q.front();
         q.pop();
         vis[pre]=false;
         ;i<=n;i++)
         if (relax(pre,i,a[pre][i]) && !vis[i])
         {
             vis[i]=true;
             q.push(i);
         }
     }
 }
 int main()
 {
     scanf(],&y[],&x[],&y[]);
     n=;
     double ca,cb;
     int start,end;
     ;
     ;i<imax_n;i++)
     {
         ;j<imax_n;j++)
         a[i][j]=0.0;
     }
     while (scanf("%lf%lf",&ca,&cb)!=EOF)
     {
          && cb==-)
         {
             end=n;
             for (int i=start;i<end;i++)
             {
                     a[i][i+]=a[i+][i]=getDis(x[i],y[i],x[i+],y[i+])*;
                     //printf("%d %d ==> %d %d\n",x[i],y[i],x[j],y[j]);
             }
             flag=;
             continue;
         }
         ++n;
         x[n]=ca;
         y[n]=cb;
         )
         {
             start=n;
             flag=;
         }
     }
     init();
     spfa();
     printf(]);
     ;
 }
05-02 11:40