iphxer
求的是最短路径实际上是求得中位数,通过比较每个坐标与中位数的坐标
来求得最短路径 要抓住问题的本质
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
int x[110],y[110];
int x1[110],y2[110];
int cmp(const void*a,const void*b)
{
return *(int *)a-*(int *)b;
}
int main()
{
int n;
scanf("%d",&n);
while(n--)
{
int i,m,sum=0;
scanf("%d",&m);
for(i=0;i<m;i++)
{
scanf("%d%d",&x[i],&y[i]);
x1[i]=x[i];
y2[i]=y[i];
}
qsort(x1,m,sizeof(x1[0]),cmp);
qsort(y2,m,sizeof(y2[0]),cmp);
for(i=0;i<m;i++)
{
if(x[i]==x1[m/2]&&y[i]==y2[m/2])
continue;
sum+=abs(x[i]-x1[m/2])+abs(y[i]-y2[m/2]);
}
printf("%d\n",sum);
}
return 0;
}