#include<stdio.h> #include<math.h> #include<string.h> #define max 110 int xx[max],yy[max]; int v[max*max][max]; double map[max*max][max]; int pi[max]; int fang[max]; int m,n,t1,t2,s; double dis(int x1,int y1,int x2,int y2) { return sqrt((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2)); } int dfs(int i) { for(int j=1;j<=m;j++) { if(fang[j]==0&&v[i][j]==1) { fang[j]=1; if(pi[j]==0||dfs(pi[j])) { pi[j]=i; return 1; } } } return 0; } int fun(double h) { int i,j,p; for(i=1;i<=m*n;i++) for(j=1;j<=m;j++) { if(map[i][j]<=h) v[i][j]=1; else v[i][j]=0; } p=0; memset(pi,0,sizeof(pi)); for(i=1;i<=m*n;i++) { memset(fang,0,sizeof(fang)); if(dfs(i)) p++; } if(p==m) return 1; else return 0; } int main() { int i,j,k; double x,y,anss,mid; while(scanf("%d%d%d%d%d",&n,&m,&t1,&t2,&s)!=EOF) { for(i=1;i<=m+n;i++) scanf("%d%d",&xx[i],&yy[i]); memset(map,0,sizeof(map)); for(i=1;i<=n;i++) for(j=1;j<=m;j++) for(k=1;k<=m;k++) map[(i-1)*m+j][k]=(t1*1.0/60)*j+t2*(j-1)+dis(xx[k],yy[k],xx[m+i],yy[m+i])/s; x=0; y=200000000; anss=200000000; while(fabs(x-y)>1e-8) { mid=(x+y)/2; if(fun(mid)) { y=mid; anss=mid; }else x=mid; } printf("%.6f\n",anss); } return 0; }