拯救007

just bfs

#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 

using namespace std;

int n,d;

struct P
{
    int x,y;
    double dis;
}p[105];

int vis[105];

double cal(int x,int y)
{
    return sqrt(x*x+y*y)-15;//计算出鳄鱼到中心陆地边缘的距离
}

void BFS()
{
    queue

q; for(int i=1;i<=n;i++) { if(p[i].dis<=d)//一开始选出最靠近岸边的鳄鱼 { q.push(p[i]); vis[i]=1; } } while(!q.empty()) { P node=q.front(); if(node.x+d>=50 || node.x-d<=-50 || node.y+d>=50 || node.y-d<=-50) { printf("Yes\n"); return ; } q.pop(); for(int i=1;i<=n;i++) { if(!vis[i] && node.dis+d>=p[i].dis) { q.push(p[i]); vis[i]=1; } } } printf("No\n"); } int main() { memset(vis,0,sizeof(vis)); scanf("%d%d",&n,&d); for(int i=1;i<=n;i++) { scanf("%d%d",&p[i].x,&p[i].y); p[i].dis=cal(p[i].x,p[i].y); } BFS(); return 0; }



你可能感兴趣的:(拯救007)