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

来源:互联网 发布:休闲网络手游 编辑:程序博客网 时间:2024/04/29 21:17
/* ***********************************************Author        :xryzEmail         :523689985@qq.comCreated Time  :5-3 19:23:22File 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;}
0 0
原创粉丝点击