zoukankan      html  css  js  c++  java
  • 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/

  • 相关阅读:
    Qt5:快速设计对话框 QtDesigner 的使用
    Qt5:为菜单项添加图标 、 快捷键 和 状态栏 提示
    Qt5:在窗口上创建菜单栏
    Qt5:主窗口的创建 子类化QMainWindow
    AltiumDesigner设计快速入门
    AT24C02的MSP430驱动
    DSP_Builder设计方法说明_SinWave
    矩阵按键的MSP430驱动函数
    DAC8552使用说明
    PS2的FPGA解码模块
  • 原文地址:https://www.cnblogs.com/xryz/p/4848012.html
Copyright © 2011-2022 走看看