solution:

这道题其实以每个点为圆心遍历,找到和它距离最大的就行。

要注意:

  • 不要把外层循环的min写成max,详见注释

  • 两个点互相覆盖不同,详见注释

#include<cstdio>
#include<algorithm>
using namespace std;
struct ben
{
	int x,y;
}a[1005];
int main()
{
	int n;
	scanf("%d",&n);
	for(int i=1;i<=n;i++)
	{
		scanf("%d%d",&a[i].x,&a[i].y);
	}
	int ans=2147483640;
	for(int i=1;i<=n;i++)
	{
		int r=0;
		for(int j=1;j<=n;j++)//两个数互相包含是不同的!!!1不要写成i+1
		{
            if(i==j)continue;
			r=max(r,(a[i].x-a[j].x)*(a[i].x-a[j].x)+(a[i].y-a[j].y)*(a[i].y-a[j].y));
		}
		ans=min(ans,r);//因为在上面取到的r就已经包含了所有的黑子,所以这里是min!!! 
	}
	printf("%.4lf\n",(double)ans*3.1415926535);
	return 0;
}