PTA - 구원 007 (BFS)
사고의 방향
길이 가 100 인 악어 못 007 은 (0, 0) 을 중심 으로 지름 이 15 인 둥 근 섬 에서 악어 머리 를 밟 고 밖으로 뛰 어 나 와 연못 에서 뛰 어 나 올 수 있 는 지 를 구 해 야 한다. 경기 할 때 제목 을 단번에 읽 지 못 했 고 악 어 를 밟 고 밖으로 뛰 어 나 가 는 것 을 보지 못 했다. 사실은 BFS 였 다.
시합 후에 아주 좋 은 도 해 를 보 았 다.
AC 코드
#include
#include
#include
#include
#include
#include
#define mst(a) memset(a, 0, sizeof(a))
using namespace std;
const int maxn = 105;
int vis[maxn];
int n, d;
struct save007{
int x, y;
double dd;
};
save007 p[maxn];
double dis( int x, int y ){
return sqrt(x*x+y*y) - 15;
}
bool win( int x, int y ){
if( x + d >= 50 || y + d >= 50 || x - d <= -50 || y - d <= -50 )
return true;
return false;
}
void BFS(){
queue que;
for( int i = 0; i < n; i++ ){
if( p[i].dd <= d ){
que.push(p[i]);
vis[i] = 1;
}
}
while( !que.empty() ){
save007 node = que.front();
if( win( node.x, node.y ) ){
puts("Yes");
return;
}
que.pop();
for( int i = 0; i < n; i++ ){
if( !vis[i] && node.dd + d >= p[i].dd ){
que.push(p[i]);
vis[i] = 1;
}
}
}
printf("No
");
return;
}
void solve(){
if( d >= 50 - 7.5 ) printf("Yes
");
else BFS();
return;
}
int main()
{
mst(vis);
mst(p);
scanf("%d%d",&n,&d);
for( int i = 0; i < n; i++ ){
scanf("%d%d",&p[i].x, &p[i].y);
p[i].dd = dis(p[i].x, p[i].y);
}
solve();
return 0;
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
백준 16234번 인구 이동cpp python 시뮬레이션 구현 문제에 bfs 한스푼 얹은 느낌의 문제네요 로직을 설명해보겠습니다 인구 이동이 없을때까지 반복하기 때문에 while문안에 코드를 작성하고 한번의 반복문마다 인구 이동이 있었는지 검...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.