BRAVEDUCK 확인부탁드립니다.

  • DevPooh
    DevPooh

    질문

    • 기존의 테스트케이스와 특정 테스트케이스를 만들어서 테스트 후 정답 제출을 하고 있는데 오답이 나오는데 혹시 제가 놓치고 있는 부분이 있는지 알려주시면 감사하겠습니다.

    Soucre code

    코드 블럭 문법을 다음과 같이 사용하실 수 있습니다.

    #include <iostream>
    #include <cmath>
    #include <queue>
    using namespace std;
    
    typedef struct _Stone
    {
        double x, y;
        bool visit;
    } Stone;
    
    bool JumpCheck(Stone t1, Stone t2, double J)
    {
        double tJ = sqrt(((t1.x - t2.x) * (t1.x - t2.x)) + ((t1.y - t2.y) * (t1.y - t2.y)));
        if(tJ <= J)
        {
            return true;
        }
        return false;
    }
    
    int main(void)
    {
        int T, J, N;        
        queue<Stone> qStone;
        Stone tStart, tEnd;
        Stone tStone[3000];
    
        cin >> T;
        while(T--)
        {
            tEnd.visit = false;
            while(!qStone.empty())
            {
                qStone.pop();
            }
    
            cin >> J;
            cin >> tStart.x >> tStart.y;
            cin >> tEnd.x >> tEnd.y;
            cin >> N;
            for(int i = 0; i < N; i++)
            {
                cin >> tStone[i].x >> tStone[i].y;
                tStone[i].visit = false;
            }
    
            for(int i = 0; i < N; i++)
            {
                if(JumpCheck(tStart, tStone[i], J))
                {
                    tStone[i].visit = true;
                    qStone.push(tStone[i]);
                }
            }
    
            while(!qStone.empty())
            {
                for(int i = 0; i < N; i++)
                {
                    if(JumpCheck(qStone.front(), tStone[i], J) && tStone[i].visit == false)
                    {
                        tStone[i].visit = true;
                        qStone.push(tStone[i]);
                    }  
                }
                if(JumpCheck(qStone.front(), tEnd, J))
                {
                    tEnd.visit = true;
                    break;
                } 
                qStone.pop();
            }
    
            if(tEnd.visit)
                cout << "YES" << endl;
            else
                cout << "NO" << endl;
        }
        return 0;
    }
    

    10년 전
1개의 댓글이 있습니다.
  • Being
    Being

    여러 개의 테스트 케이스가 한 입력에 주어지는 경우에 문제가 일어나진 않을지 잘 생각해 보세요.


    10년 전 link
  • 정회원 권한이 있어야 커멘트를 다실 수 있습니다. 정회원이 되시려면 온라인 저지에서 5문제 이상을 푸시고, 가입 후 7일 이상이 지나셔야 합니다. 현재 문제를 푸셨습니다.