#include #include float sx[103], sy[103], wx[23], wy[23], p[23]; float dist (int i, int j) { return (wx[i]-sx[j])*(wx[i]-sx[j]) + (wy[i]-sy[j])*(wy[i]-sy[j]); } int main (void) { int k, K; int n, m, i, j; int bv; float c, bc, bd; FILE *in = fopen ("ise.in", "r"); fscanf (in, "%d\n", &K); for (k = 1; k <= K; k ++) { fscanf (in, "%d %d\n", &n, &m); for (j = 0; j < n; j ++) fscanf (in, "%f %f\n", &sx[j], &sy[j]); for (i = 0; i < m; i ++) fscanf (in, "%f %f %f\n", &wx[i], &wy[i], &p[i]); bc = -1; for (bv = 1; bv < (1 << m); bv++) { c = 0; for (i = 0; i < m; i ++) if (bv & (1 << i)) c += p[i]; for (j = 0; j < n; j ++) { bd = -1; for (i = 0; i < m; i ++) if ((bv & (1 << i)) && (bd < 0 || dist(i,j) < bd)) bd = dist(i,j); c += sqrt(bd); } if (bc < 0 || c < bc) bc = c; } printf ("Data Set %d:\n", k); printf ("%.2f\n", bc); } fclose (in); return 0; }