一个换行符的问题wr十几次 - -
各种debug诶
#include<stdio.h> #include<math.h> #define INF 1000000000 struct point { double x,y; } P[105]; double D(point a,point b) { return sqrt((b.y-a.y)*(b.y-a.y)+(b.x-a.x)*(b.x-a.x)); } double mp[105][105]; int main() { int T,n,i,j,k; double X,Y,dist,min,answer; scanf("%d",&T); while(T--) { scanf("%d",&n); for(i=1;i<=n;i++) for(j=1;j<=n;j++) mp[i][j]=INF; for(i=1;i<=n;i++) { scanf("%lf%lf",&P[i].x,&P[i].y); for(j=1;j<=i;j++) { dist=D(P[i],P[j]); mp[i][j]=mp[j][i]=dist; } } // for(i=1;i<=n;i++) // { // for(j=1;j<=n;j++) // printf("%.1lf\t",mp[i][j]); // printf("\n"); // } // printf("!\n"); // system("pause"); for(i=1;i<=n;i++) mp[0][i]=mp[1][i]; // for(i=1;i<=n;i++) printf("mp[0][%d]=%.1lf\t",i,mp[0][i]);printf("\n"); answer=0; for(k=i=1;i<=n;i++) { min=INF; for(j=1;j<=n;j++) { // printf("mp[0][j]=%.1lf\tmin=%.1lf\t\n",mp[0][j],min); if(mp[0][j]!=0&&min>mp[0][j]) { min=mp[0][j]; k=j; } } // printf("min=%.1lf k=%d\n",min,k); answer+=mp[0][k]; mp[0][k]=0; for(j=1;j<=n;j++) if(mp[0][j]!=0&&mp[0][j]>mp[k][j]) mp[0][j]=mp[k][j]; } // for(i=1;i<=n;i++) // { // for(j=1;j<=n;j++) // printf("%.1lf\t",mp[i][j]); // printf("\n"); // } printf("%.2lf\n",answer); if(T) printf("\n"); } return 0; }