#include<iostream>
#include<cstdio>
#include<queue>
#include<cmath>
#include<cstring>
#define M 1005
#define E 0.00000001
using namespace std;
struct Hole
{
double x,y;
};
struct Hole H[M];
bool IsAdjacent(Hole,Hole,double);
int BFS(Hole,Hole,double);
int N;
int main()
{
int v,m,n,l;
double dis;
char inp[100];
//freopen("in.txt","r",stdin);
while(scanf("%d%d\n",&v,&m)&&(m+v))
{
N=0,dis=60.0*v*m;
while(gets(inp))
{
for(l=0;inp[l];l++);
if(!l)break;
sscanf(inp,"%lf%lf",&H[N].x,&H[N].y);
N++;
}
n = BFS(H[0],H[1],dis);
if(n>=0)
printf("Yes, visiting %d other holes.\n",n);
else
printf("No.\n");
}
return 0;
}
bool IsAdjacent(Hole h1,Hole h2,double dis)
{
double d,x,y;
x=h1.x-h2.x;
y=h1.y-h2.y;
d=sqrt(x*x+y*y);
if(d+E>dis)return false;
return true;
}
int BFS(Hole hs,Hole hd,double dis)
{
int h,i,color[M],d[M];
queue<int>Q;
memset(color,0,sizeof(color));
color[0]=1,d[0]=0;
Q.push(0);
while(!Q.empty())
{
h=Q.front();Q.pop();
for(i=0;i<N;i++)
{
if(color[i]==0&&IsAdjacent(H[h],H[i],dis))
{
color[i]=1;
d[i]=d[h]+1;
if(H[i].x==hd.x &&H[i].y ==hd.y)return d[h];
Q.push(i);
}
}
}
return -1;
}
No comments:
Post a Comment
Note: Only a member of this blog may post a comment.