Go: package main

import (
	"fmt"
	"math"
)

func main() {
	n := scanInt()
	for i := 0; i < n; i++ {
		circleTriangle()
	}
}

func scanInt() int {
	var n int
	fmt.Scanf("%d", &n)
	return n
}

func circleTriangle() {
	var x1, y1, x2, y2, x3, y3 float64
	fmt.Scanf("%f%f%f%f%f%f", &x1, &y1, &x2, &y2, &x3, &y3)
	a := 2 * (x1 - x2)
	b := 2 * (y1 - y2)
	c := 2 * (x1 - x3)
	d := 2 * (y1 - y3)
	e := x1*x1 - x2*x2 + y1*y1 - y2*y2
	f := x1*x1 - x3*x3 + y1*y1 - y3*y3

	px := (d*e - b*f) / (a*d - b*c)
	py := (a*f - c*e) / (a*d - b*c)

	r := math.Sqrt((x1-px)*(x1-px) + (y1-py)*(y1-py))
	fmt.Printf("%.3f %.3f %.3f\n", px, py, r)
}

C++: #include <iostream>
#include <stdio.h>
#include <string.h>
#include <math.h>
#include <algorithm>
#include <stdlib.h>

using namespace std;
double a, b, c, d, e, f;
double x, y;


void function(){
	if(c/b == f/e){
		x = 0;
		y = c/b;
	}else if(c/a == f/d){
		y = 0;
		x = c/a;
	}else{
		y = (c*d - a*f)/(d*b - a*e);
		x = (c - b*y)/a;
	}
	return;
}


int main(){
	int n;
	cin >> n;

	for(int i=0 ; i<n ; i++){
		double x1, y1, x2, y2, x3, y3;
		cin >> x1 >> y1 >> x2 >> y2 >> x3 >> y3;

		if((y2-y1) == 0){
			a = 2*(x3 - x1);
			b = 2*(y3 - y1);
			c = (x3 - x1)*(x1 + x3) + (y3 - y1)*(y1 + y3);

			d = 2*(x3 - x2);
			e = 2*(y3 - y2);
			f = (x3 - x2)*(x2 + x3) + (y3 - y2)*(y2 + y3);
		}else if((y3-y1) == 0){

			a = 2*(x3 - x2);
			b = 2*(y3 - y2);
			c = (x3 - x2)*(x2 + x3) + (y3 - y2)*(y2 + y3);

			d = 2*(x2 - x1);
			e = 2*(y2 - y1);
			f = (x2 - x1)*(x1 + x2) + (y2 - y1)*(y1 + y2);
		}else{

			a = 2*(x3 - x1);
			b = 2*(y2 - y1);
			c = (x3 - x1)*(x1 + x3) + (y3 - y1)*(y1 + y3);

			d = 2*(x2 - x1);
			e = 2*(y2 - y1);
			f = (x2 - x1)*(x1 + x2) + (y2 - y1)*(y1 + y2);
		}
		function();
		double r;
		r = sqrt((x - x1)*(x - x1) + (y - y1)*(y - y1));
		printf("%.3lf %.3lf %.3lf",x, y, r);
	}
	return 0;
}

C++: #include <iostream>
#include <iomanip>
#include <math.h>
using namespace std;

#define L 0.00001

typedef struct {
	double x, y;
} P;
typedef struct {
	double a, b, c;
} EQ;

int n;
P p[3];
double r;

inline bool is0(double d) {
	return d < L && d > -L;
}

inline EQ get_eq(P p1, P p2) {
	return{ p2.y - p1.y, p1.x - p2.x, (p2.y - p1.y)*p1.x - (p2.x - p1.x)*p1.y };
}

inline P get_center(P p1, P p2) {
	return{ (p1.x + p2.x) / 2, (p1.y + p2.y) / 2 };
}

inline EQ conv_ra(EQ eq, P p) {
	return{ eq.b, -eq.a, eq.b*p.x - eq.a*p.y };
}

inline P get_p(EQ eq1, EQ eq2) {
	double y;
	if (is0(eq1.a)) {
		y = eq1.c / eq1.b;
		return{ (eq2.c - eq2.b*y) / eq2.a,y };
	}
	else if (is0(eq2.a)) {
		y = eq2.c / eq2.b;
		return{ (eq1.c - eq1.b*y) / eq1.a,y };
	}
	else {
		y = (eq1.c*eq2.a - eq2.c*eq1.a) / (eq1.b*eq2.a - eq2.b - eq1.a);
		return{ (eq1.c - eq1.b*y) / eq1.a,y };
	}
}

inline double dist(P p1, P p2) {
	return sqrt(pow((p1.x - p2.x), 2) + pow(p1.y - p2.y, 2));
}

inline EQ get_ieq(P p1, P p2) {
	return conv_ra(get_eq(p1, p2), get_center(p1, p2));
}

inline double rnd(double d) {
	int a = d * 10000;
	if (a % 10 >= 5) {
		a += 10;
	}
	a /= 10;
	return a * 0.001;
}

int main(){
	cin >> n;
	EQ eq1, eq2;
	P c;
	double r;
	for (int I = 0; I < n; I++) {
		for (int i = 0; i < 3; i++) {
			cin >> p[i].x >> p[i].y;
		}
	}
	eq1 = get_ieq(p[0], p[1]);
	eq2 = get_ieq(p[1], p[2]);
	c = get_p(eq1, eq2);
	r = dist(c, p[0]);
	cout << fixed << setprecision(3) << rnd(c.x) << " " << rnd(c.y) << " " << rnd(r) << endl;

	return 0;
}

C++: #include<cstdio>
#include<cmath>
/*
px2-2pxx1+x12+py2-2pyy1+y12=px2-2pxx2+x22+py2-2pyy2+y22
x12+y12-2(pxx1+pyy1)=x22+y22-2(pxx2+pyy2)
x12+y12-2(pxx1+pyy1)=x32+y32-2(pxx3+pyy3)
2px(x2-x1)+2py(y2-y1)=x22+y22-x12-y12
2px(x3-x1)+2py(y3-y1)=x32+y32-x12-y12
px=((x22+y22-x12-y12)(y3-y1)-(x32+y32-x12-y12)(y2-y1))/2((x2-x1)(y3-y1)-(x3-x1)(y2-y1))
py=(x22+y22-x12-y12-2px(x2-x1))/2(y2-y1)*/
int main(){
    int n;
    scanf("%d", &n);
    while(n--){
        float x1, x2, x3, y1, y2, y3; 
        scanf("%f %f %f %f %f %f", &x1, &y1, &x2, &y2, &x3, &y3);
        float px, py; 
        px=((x2*x2+y2*y2-x1*x1-y1*y1)*(y3-y1)-(x3*x3+y3*y3-x1*x1-y1*y1)*(y2-y1))/(2*((x2-x1)*(y3-y1)-(x3-x1)*(y2-y1)));
        if(y2!=y1)
             py=(x2*x2+y2*y2-x1*x1-y1*y1-2*px*(x2-x1))/(2*(y2-y1));
        else
            py=(x3*x3+y3*y3-x1*x1-y1*y1-2*px*(x3-x1))/(2*(y3-y1));
        float r;
        r=sqrt((px-x1)*(px-x1)+(py-y1)*(py-y1));
        printf("%.3f %.3f %.3f\n", px, py, r); 
    }   
    return 0;
}

C++: #include <iostream>
#include <cmath>
#include <cstdio>
using namespace std;

int w(int n)
{
  return n * n;
}

int main()
{
  double x1, y1, x2, y2, x3, y3;
  int n;
  double a, b, c;
  double px, py, r;

  cin >> n;

  for (int i = 0; i < n; i++){
    cin >> x1 >> y1 >> x2 >> y2 >> x3 >> y3;

    a = sqrt(w(x1 - x2) + w(y1 - y2));
    b = sqrt(w(x2 - x3) + w(y2 - y3));
    c = sqrt(w(x3 - x1) + w(y3 - y1));
    px = ((y1 - y3) * (w(y1) - w(y2) + w(x1) - w(x2)) - (y1 - y2) * (w(y1) - w(y3) + w(x1) - w(x3))) / (2 * (y1 - y3) * (x1 - x2) - 2 * (y1 - y2) * (x1 - x3));
    py = ((x1 - x3) * (w(x1) - w(x2) + w(y1) - w(y2)) - (x1 - x2) * (w(x1) - w(x3) + w(y1) - w(y3))) / (2 * (x1 - x3) * (y1 - y2) - 2 * (x1 - x2) * (y1 - y3));
    r = (a * b * c) / sqrt((a + b + c) * (b + c - a) * (a - b + c) * (a + b - c));
    
    printf("%.3f %.3f %.3f\n", px, py, r);
  }

  return 0;
}