Language: C++

#define _CRT_SECURE_NO_WARNINGS
#define _USE_MATH_DEFINES
#include <iostream>
#include <iomanip>
#include <cstdio>
#include <cstring>
#include <cmath>
#include <cstdlib>
#include <algorithm>
#include <string>
#include <vector>
#include <stack>
#include <queue>
#include <set>
#include <map>
#include <unordered_map>
#include <functional>
#include <utility>
#include <tuple>
#include <cctype>
#include <bitset>
#include <complex>
#include <cmath>
#include <array>
#include <numeric>
using namespace std;
#define INF 0x3f3f3f3f
#define INFLL 0x3f3f3f3f3f3f3f3fLL
//#define MOD 998244353
#define MOD 1000000007
#define mp make_pair
#define mt make_tuple
#define pb push_back
#define eb emplace_back
typedef long long ll;
typedef unsigned long long ull;
typedef long double ld;
typedef pair<int, int> pint;
typedef pair<ll,ll> pll;
typedef tuple<int,int,int> tint;
typedef vector<int> vint;
typedef vector<ll> vll;
typedef vector<ull> vull;
typedef vector<pint> vpint;
int dx[8]={0,0,-1,1,1,1,-1,-1};
int dy[8]={-1,1,0,0,1,-1,1,-1};
const int SIZE=200050;
//↑templete
#define double long double
double dist(pair<double, double> A, pair<double, double> B){
	double a=A.first-B.first, b=A.second-B.second;
	return sqrt(a*a+b*b);
}
signed main(){
	cout<<setprecision(20)<<fixed;

	int N;
	cin>>N;
	vector<pair<double, double>> X;
	for(int i=0;i<N;i++){
		int x, y;
		cin>>x>>y;
		X.eb(x, y);
	}

	if(N==2){
		cout<<dist(X[0], X[1])/2.<<endl;
		return 0;
	}

	double ans=1.0*INF;
	double EPS=1e-8;

	for(int i=0;i<N;i++){
		for(int j=0;j<i;j++){

			if(i==j)
				continue;
			
			//中点
			double ce=mp((X[i].first+X[j].first)/2, (X[i].second+X[j].second)/2);
			double rr=dist(X[i], X[j])/2;

			bool fla=1;
			for(int l=0;l<N;l++){
				if(dist(ce, X[l]) > rr+EPS)
					flag=0;
			}
			if(flag)
				ans=min(ans, rr);

			for(int k=0;k<j;k++){
				if((i==j) || (j==k) || (k==i))
					continue;

				double a=dist(X[j], X[k]), b=dist(X[k], X[i]), c=dist(X[i], X[j]);
				double alpha=a*a*(b*b+c*c-a*a), beta=b*b*(c*c+a*a-b*b), gamma=c*c*(a*a+b*b-c*c);
				double x=(alpha*X[i].first+beta*X[j].first+gamma*X[k].first)/(alpha+beta+gamma);	//外心の座標
				double y=(alpha*X[i].second+beta*X[j].second+gamma*X[k].second)/(alpha+beta+gamma);
				pair<double, double> cen=mp(x, y);

				//cout<<x<<" "<<y<<endl;

				//外接円の半径
				double r=a*b*c/sqrt((a+b+c)*(-1*a+b+c)*(a-b+c)*(a+b-c));

				//すべての円が円に入っているか？
				//cout<<r<<endl;
				bool flag=1;
				for(int l=0;l<N;l++){
					if(dist(cen, X[l]) > r+EPS)
						flag=0;
				}
				if(flag)
					ans=min(ans, r);
			}
		}
	}
	cout<<ans<<endl;
	return 0;
}

Compiler output:
a.cc: In function 'int main()':
a.cc:81:37: error: cannot convert 'std::pair<long double, long double>' to 'long double' in initialization
   81 |                         double ce=mp((X[i].first+X[j].first)/2, (X[i].second+X[j].second)/2);
      |                                     ^
      |                                     |
      |                                     std::pair<long double, long double>
a.cc:86:41: error: could not convert 'ce' from 'long double' to 'std::pair<long double, long double>'
   86 |                                 if(dist(ce, X[l]) > rr+EPS)
      |                                         ^~
      |                                         |
      |                                         long double
a.cc:87:41: error: 'flag' was not declared in this scope; did you mean 'fla'?
   87 |                                         flag=0;
      |                                         ^~~~
      |                                         fla
a.cc:89:28: error: 'flag' was not declared in this scope; did you mean 'fla'?
   89 |                         if(flag)
      |                            ^~~~
      |                            fla