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 JAVA (judge verdict: Accepted)

import java.util.*;

public class Main {
	
	static double[] solve(double a, double b, double c, double d, double e, double f){
			double det = a*e-b*d;
			double[] ans = new double[2];
			ans[0] = (c*e-b*f)/det;
			ans[1] = (a*f-c*d)/det;
			for(int i=0; i<2; i++) if(ans[i]==-0) ans[i] = 0;
			return ans;
	}
	

	public static void main(String[] args) {
		Scanner stdIn = new Scanner(System.in);
		int n = stdIn.nextInt();
		for(int i=0; i<n; i++){
			double x1 = stdIn.nextDouble();
			double y1 = stdIn.nextDouble();
			double x2 = stdIn.nextDouble();
			double y2 = stdIn.nextDouble();
			double x3 = stdIn.nextDouble();
			double y3 = stdIn.nextDouble();
		
			double[] ans = solve(x1-x2,y1-y2,x1*(x1-x2)+y1*(y1-y2),x3-x2,y3-y2,x3*(x3-x2)+y3*(y3-y2));
			double xp,yp,r;
			xp = (x2 + ans[0])/2.0;
			yp = (y2 + ans[1])/2.0;
			r = Math.sqrt((xp-x2)*(xp-x2)+(yp-y2)*(yp-y2));
			System.out.printf("%.3f %.3f %.3f",xp,yp,r);
			System.out.println();
		}
	}

}