• pat 06-图2. Saving James Bond


    /* ***********************************************
    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;
    }
    

    版权声明:本文为博主原创文章,未经博主允许不得转载。http://xiang578.top/

  • 相关阅读:
    使用mustache js模板引擎
    Application Cache API (二)
    scrollMonitor 滚动事件
    NPM中的那些库
    lodash 函数功能 boilerjs
    SeaJS 里版本号和时间戳管理的最佳实践
    开源前端框架纵横谈
    URI.js – 全能的URL操作库
    执行用户定义例程或聚合 "" 期间出现 .NET Framework 错误:
    一般ALV错误有两种情况
  • 原文地址:https://www.cnblogs.com/xryz/p/4848012.html
Copyright © 2020-2023  润新知