남극기지 왜 오답이나오는지 이해가 가질않습니다.

  • namam3gy
    namam3gy

    #include
    #include
    #include
    #include
    using namespace std;

    typedef struct{
    double x;
    double y;
    }aXis;

    double distance(double x1, double y1, double x2, double y2){
    return (pow((x1 - x2),2) + pow((y1 - y2),2));
    }

    void logic(){
    std::map rocation;

    vector <aXis> station;
    vector <int> connectedStation;
    int n;
    scanf("%d", &n);
    for(int i=0;i<n;i++){
        aXis temp;
        scanf("%lf %lf", &temp.x, &temp.y);
        station.push_back(temp);
    }
    if(n==1){
        printf("0.00\n");return;
    }
    int visitStation[100]={0};
    int current = 0, go, iterator=0;
    double result=0, min=50000;
    
    connectedStation.push_back(0);
    visitStation[0]=1;
    while(1){
    
        for(int i=0;i<n;i++){
            if(visitStation[i] == 0 && current != i){
                double temp =distance(station[current].x, station[current].y, station[i].x, station[i].y) ;
                if(temp<=min){
                    min = temp;
                    go = i;
                }
            }
        }
        if(current == connectedStation.back()){
            connectedStation.push_back(go);

    // printf("%d -> %d\n", current, go);
    current = 0;
    visitStation[go] = 1;
    iterator=0;
    if(result < min)
    result = min;
    min = 50000;
    go=0;
    if(connectedStation.size() == n)
    break;
    }
    else
    current = connectedStation[++iterator];

    }

    // for(int i=0;i<n;i++){
    // printf("%d\n", connectedStation[i]);
    // }
    // printf(("\n"));

    result = sqrt(result);
    printf("%.2lf\n",result);

    }

    int main(int argc, const char * argv[])
    {
    int n;
    scanf("%d", &n);

    for(int i=0;i<n;i++)
        logic();
    return 0;

    }

    프림알고리즘을 제나름대로 구현해보았는데
    자꾸 오답이 나오네요.
    어떤 예외때문에 오답이 뜨는지 모르겠습니다.ㅠㅠ


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

    코드를 구문 강조해주셔야 대답을 받으실 수 있을 것 같습니다.


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