1 2 4 0 100 0 300 0 600 150 750Sample Output
212.13
题意·:有无线电的城市可以随意联系,没有无线电的城市只能跟不超过d距离的城市联系,求d;
其中有s个城市可以有无线电,共有p个城市,下面有p个城市的坐标
#include
#include
#include
#include
#include
using namespace std;
const int MAXN=509;
const int inf=0x3f3f;
int n,m;
double map[MAXN][MAXN],dis[MAXN];
int book[MAXN];
struct node
{
int a,b;
}z[MAXN];
double judge(int i,int j)
{
return sqrt((double)((z[i].a-z[j].a)*(z[i].a-z[j].a)+(z[i].b-z[j].b)*(z[i].b-z[j].b)));
}
void init()
{
for(int i=1;i<=n;i++)
for(int j=1;j<=n;j++)
if(i==j) map[i][j]=0;
else map[i][j]=inf;
}
int main()
{
int T;
scanf("%d",&T);
while(T--)
{
int s,p;
scanf("%d%d",&s,&p);
init();
memset(book,0,sizeof(book));
for(int i=1;i<=p;i++)
{
scanf("%d%d",&z[i].a,&z[i].b);
}
for(int i=1;i<=p;i++)
for(int j=1;j<=p;j++)
map[i][j]=judge(i,j);
for(int i=1;i<=p;i++)
dis[i]=map[1][i];
int cont=1,u;
book[1]=1;
while(contmap[u][v])
dis[v]=map[u][v];
}
}
sort(dis+1,dis+p+1);
printf("%.2lf\n",dis[p-s+1]);
}
return 0;
}