Curso 2023/2024
Fíjate en estos dos detalles de la siguiente solución: el uso
de Punto
, y la utilización de sqrt
una sola vez.
typedef pair<float, float> Punto; float distanciaAlCuadrado(const Punto & p1, const Punto & p2) { float a = p2.first - p1.first; float b = p2.second - p1.second; return a * a + b * b; } float distanciaMinima(const vector<Punto> & puntos) { if (puntos.size() < 2) throw string("Necesitamos al menos dos puntos."); float minima = distanciaAlCuadrado(puntos[0], puntos[1]); for (int i = 0; i < puntos.size() - 1; i++) for (int j = i + 1; j < puntos.size(); j++) minima = min(minima, distanciaAlCuadrado(puntos[i], puntos[j])); return sqrt(minima); }