题目链接:点击打开链接
题目大意:在一个 100*100 坐标 以及 中心原点(起点)在(0,0)位置并且半径为 7.5 的圆形上,附近有很多的鳄鱼(可以跳到上面去),问是否可以跳到坐标外(包含边界)。解题思路:第一跳需要特殊处理,接下来就DFS判断该坐标点是否可以跳出成功,或继续DFS下一个可跳的点。
AC 代码
usingnamespacestd; typedeflonglongll; structnode{ doublex,y; intvis; }; nodeori; vector<node>vnd; intn; doubled; doublefdis(nodea, nodeb) { returnsqrt(pow(a.x-b.x,2)+pow(a.y-b.y,2)); } voiddfs(inti) { vnd[i].vis=1; if(50-abs(vnd[i].x)<=d||50-abs(vnd[i].y)<=d) { puts("Yes"); exit(0); } for(intj=0;j<n;j++) if(!vnd[j].vis&&fdis(vnd[j],vnd[i])<=d) dfs(j); } intmain() { nodend; vector<int>vid; scanf("%d%lf",&n,&d); for(inti=0;i<n;i++) { scanf("%lf%lf",&nd.x,&nd.y); nd.vis=0; vnd.push_back(nd); } if(7.5+d>=50) { puts("Yes"); return0; } for(inti=0;i<n;i++) if(fdis(vnd[i],ori)<=d+7.5) vid.push_back(i); for(inti=0;i<vid.size();i++) if(!vnd[vid[i]].vis) dfs(vid[i]); puts("No"); return0; }