您的位置:首页 > 其它

pat 06-图2. Saving James Bond - Easy Version (25)

2015-05-03 20:09 399 查看
/* ***********************************************
Author        :xryz
Email         :523689985@qq.com
Created Time  :5-3 19:23:22
File Name     :Saving James Bond - Easy Version.cpp
************************************************ */

#include <stdio.h>
#include <string.h>
#include <iostream>
#include <algorithm>
#include <vector>
#include <queue>
#include <set>
#include <map>
#include <string>
#include <math.h>
#include <stdlib.h>
#include <time.h>
using namespace std;
struct node
{
double x,y;
}a[100+5];
int n,vis[100+5];
double d;
int dis(node d1,node d2)
{
if(d*d<(d1.x-d2.x)*(d1.x-d2.x)+(d1.y-d2.y)*(d1.y-d2.y)) return 0;
return 1;
}
int first(int d1)
{
if(a[d1].x*a[d1].x+a[d1].y*a[d1].y>(d+15)*(d+15)) return 0;
else return 1;
}

int safe(node d1)
{
if(d1.x>=50-d) return 1;
if(d1.y>=50-d) return 1;
if(d1.x<=-50+d) return 1;
if(d1.y<=-50+d) return 1;
return 0;
}
int dfs(int d1)
{
int ans=0,i;
if(safe(a[d1])) ans=1;
else
{
for(i=1;i<=n;i++)
{
if(!vis[i]&&dis(a[d1],a[i]))
{
vis[i]=1;
ans=dfs(i);
if(ans==1) break;
}
}
}
return ans;
}
int main()
{
int i,flag;
while(~scanf("%d%lf",&n,&d))
{
a[0].x=a[0].y=0;
for(i=1;i<=n;i++)
{
scanf("%lf%lf",&a[i].x,&a[i].y);
}
flag=0;

for(i=1;i<=n;i++)
{
memset(vis,0,sizeof(vis));
if(!vis[i]&&first(i))
{
vis[i]=1;
flag=dfs(i);
if(flag) break;
}
}

if(flag) puts("Yes");
else puts("No");
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: