// UVa 11966 - Galactic Bonding #include <stdio.h> #include <string.h> double point[1000][2]; bool seen[1000]; int n; double dd; /** * Computes the square of the distance */ double dist2(int i, int j) { double dx = point[i][0] - point[j][0]; double dy = point[i][1] - point[j][1]; return dx * dx + dy * dy; } void visit(int node) { seen[node] = true; for (int i = 0; i < n; i++) if (!seen[i] && dist2(i, node) <= dd) visit(i); } int countConstellations() { int constellations = 0; for (int i = 0; i < n; i++) if (!seen[i]) { constellations++; visit(i); } return constellations; } int main() { int cases; scanf("%d", &cases); for (int cas = 1; cas <= cases; cas++) { double d; scanf("%d %lf", &n, &d); dd = d * d; for (int i = 0; i < n; i++) scanf("%lf %lf", &point[i][0], &point[i][1]); memset(seen, false, sizeof(seen)); printf("Case %d: %d\n", cas, countConstellations()); } return 0; }
Friday, April 24, 2015
UVa 11966 - Galactic Bonding
Subscribe to:
Post Comments (Atom)
No comments:
Post a Comment