Problem:
MathJax.Hub.Config({ tex2jax: { inlineMath: [["$","$"], ["\\(","\\)"]], processEscapes: true }});

Circumscribed Circle of A Triangle.

Write a program which prints the central coordinate $(p_x, p_y)$ and the radius $r$ of a circumscribed circle of a triangle which is constructed by three points $(x_1, y_1)$, $(x_2, y_2)$ and $(x_3, y_3)$ on the plane surface.

Input

Input consists of several datasets. In the first line, the number of datasets $n$ is given. Each dataset consists of:

$x_1$ $y_1$ $x_2$ $y_2$ $x_3$ $y_3$

in a line. All the input are real numbers.

Output

For each dataset, print $p_x$, $p_y$ and $r$ separated by a space in a line. Print the solution to three places of decimals. Round off the solution to three decimal places.

Constraints

$-100 \leq x_1, y_1, x_2, y_2, x_3, y_3 \leq 100$

$ n \leq 20$

Sample Input

1
0.0 0.0 2.0 0.0 2.0 2.0

Output for the Sample Input

1.000 1.000 1.414

Solution in C (judge verdict: Time Limit Exceeded)

#include <stdio.h>
#include <math.h>

double round_off(double x);

int main(void)
{
  int n;
  int count = 0;
  double x1, x2, x3, y1, y2, y3, px, py;
  double r, a, b, c;
  double cosA, sinA;

  do{
    scanf("%d\n", &n);
  }while(n > 20);

  do{
    scanf("%lf%lf%lf%lf%lf%lf", &x1, &y1, &x2, &y2, &x3, &y3);
    if((-100 <= x1, y1, x2, y2, x3, y3) && (x1, y1, x2, y2, x3, y3 <= 100))
    count++;
       //  printf("count = %d\n",count);
       //  printf("n = %d\n",n);
       }while(n != count);
  

  a = sqrt(pow((x2-x3),2.0)+pow((y2-y3),2.0));
  b = sqrt(pow((x3-x1),2.0)+pow((y3-y1),2.0));
  c = sqrt(pow((x1-x2),2.0)+pow((y1-y2),2.0));

  cosA = (b*b+c*c-a*a)/(2.0*b*c);
  sinA = sqrt(1.0-cosA*cosA);

  r = (a/sinA)/2.0;

  px = ((y1-y3)*(y1*y1 -y2*y2 +x1*x1 -x2*x2)-(y1-y2)*(y1*y1 -y3*y3 +x1*x1 -x3*x3)) / (2.0*(y1-y3)*(x1-x2)-2.0*(y1-y2)*(x1-x3));
  py = ((x1-x3)*(x1*x1 -x2*x2 +y1*y1 -y2*y2)-(x1-x2)*(x1*x1 -x3*x3 +y1*y1 -y3*y3)) / (2.0*(x1-x3)*(y1-y2)-2.0*(x1-x2)*(y1-y3));

  printf("%.3f %.3f %.3f\n", round_off(px), round_off(py), round_off(r));

  return 0;
}

double round_off(double x)
{
  int n;
  double  unit;

  n = 4;
  unit = pow(10, n-1);
  double a = round(x*unit);
  x =  a/unit;

  return x;
}