1 条题解
-
0
C++ :
#include <cstdio> #include <cstring> #include <cmath> #include <algorithm> #define INF 999999.0 using namespace std; struct Outpost{ int x, y; }O[501]; int cmp(double a, double b){ return a > b; } int s, p; double dist[501][501], d[501]; char vis[501]; void prim(){ int i, j, k, mini, minj; double min; vis[1] = mini = 1; for(i = 1; i <= p; i++){ min = INF; for(j = 1; j <= p; j++){ if(!vis[j]){ if(dist[mini][j] < d[j]){ d[j] = dist[mini][j]; } if(d[j] < min){ min = d[j]; minj = j; } } } mini = minj; vis[mini] = 1; } } int main(){ int k, i, j, x, y; scanf("%d", &k); while(k--){ scanf("%d%d", &s, &p); memset(vis, 0, sizeof(vis)); memset(O, 0, sizeof(O)); for(i = 1; i <= p; i++){ scanf("%d%d", &O[i].x, &O[i].y); d[i] = INF; } for(i = 1; i <= p; i++){ for(j = 1; j <= i; j++){ x = O[i].x-O[j].x; y = O[i].y-O[j].y; dist[i][j] = dist[j][i] = sqrt(x*x + y*y); } } prim(); sort(d+1, d+p+1); printf("%.2f\n", d[p-s]); } return 0; }
- 1
信息
- ID
- 950
- 时间
- 2000ms
- 内存
- 128MiB
- 难度
- (无)
- 标签
- 递交数
- 0
- 已通过
- 0
- 上传者