5-10 Saving James Bond

来源:互联网 发布:重启后正在准备windows 编辑:程序博客网 时间:2024/06/07 21:50

点击打开链接

判断他能否逃脱,找特解所以用深搜。

#include<stdio.h>#include<stdlib.h>#include<iostream>#include<queue>#include<algorithm>#include<map>#include<vector>#include<cstring>#include<math.h>using namespace std;int N,D;struct node{    double x;    double y;}a[105];int flag[105]={0};double dist(node a,node b){    return sqrt((a.x-b.x)*(a.x-b.x)+(a.y-b.y)*(a.y-b.y));}int flg=0;void dfs(int x){    flag[x]=1;    if(flg)        return;    if(a[x].x+D>=50 || a[x].y+D>=50 ||a[x].x-D<=-50 ||a[x].y-D<=-50 )    {        cout<<"Yes";        flg=1;        return;    }    for(int i=1;i<=N;i++)    {        if(flag[i]==0 && dist(a[i],a[x])<=D)        {            dfs(i);        }    }}int main(){    cin>>N>>D;    a[0].x=0;    a[0].y=0;    for(int i=1;i<=N;i++)    {        cin>>a[i].x>>a[i].y;    }    for(int i=1;i<=N;i++)    {        if( dist(a[i],a[0]) <= 15+D && flag[i]==0 )        {            dfs(i);        }    }    if(!flg)        cout<<"No";}


原创粉丝点击