# Include <iostream> # include <cstdio> # include <algorithm> # include <cstring> # include <cmath> using namespace STD; bool vis [1000]; double X [1000], Y [1000]; int N; int CNT; struct node {int U, V; double DIS;} edge [500000]; int CMP (node, node B) {return. dis> B. DIS;} void cul (int u, int v) {edge [CNT]. U = u; edge [CNT]. V = V; double L1 = x [u], d1 = Y [u], L2 = x [v], D2 = Y [v]; double P = ACOs (-1.0); L1 * = P/180.0; D1 * = P/180.0; L2 * = P/180.0; d2 * = P/180.0; edge [CNT]. dis = ACOs (COS (L1) * Cos (L2) * Cos (d1-d2) + sin (L1) * sin (L2); CNT ++;} int main () {memset (VIS, true, sizeof vis); scanf ("% d", & N); For (INT I = 0; I <n; I ++) scanf ("% lf", & X [I], & Y [I]); CNT = 0; For (INT I = 0; I <N; I ++) for (Int J = I + 1; j <n; j ++) {cul (I, j) ;}sort (edge, edge + CNT, CMP); int num = 0; For (INT I = 0; I <CNT; I ++) {If (vis [edge [I]. u]) {num ++; vis [edge [I]. u] = false;} If (num = N-1) break; If (vis [edge [I]. v]) {num ++; vis [edge [I]. v] = false;} If (num = N-1) break;} For (INT I = 0; I <n; I ++) if (vis [I]) {printf ("%. 2lf %. 2lf \ n ", X [I], Y [I]); break;} return 0 ;}
Derivation of Sphere distance, reposted from others
Poj 2587 (spherical distance)