一个换行符的问题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;
}