남극기지 왜 오답이나오는지 이해가 가질않습니다. 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 코드를 구문 강조해주셔야 대답을 받으실 수 있을 것 같습니다. 10년 전 link 정회원 권한이 있어야 커멘트를 다실 수 있습니다. 정회원이 되시려면 온라인 저지에서 5문제 이상을 푸시고, 가입 후 7일 이상이 지나셔야 합니다. 현재 문제를 푸셨습니다.
namam3gy
#include
#include
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(){ rocation;
std::map
// 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"));
}
int main(int argc, const char * argv[])
{
int n;
scanf("%d", &n);
}
프림알고리즘을 제나름대로 구현해보았는데
자꾸 오답이 나오네요.
어떤 예외때문에 오답이 뜨는지 모르겠습니다.ㅠㅠ
10년 전