WA 100pts 求助!
查看原帖
WA 100pts 求助!
1171250
w132326820楼主2025/1/22 09:41

#include <bits/stdc++.h>
using namespace std;
const int N=1010;
double n,m,x,y,z;
double e[N][N],ans;
struct node{
	double x,y;
}q[N];
int c;
double dis(int i,int j){
	return sqrt((q[i].x-q[j].x)*(q[i].x-q[j].x)
		+(q[i].y-q[j].y)*(q[i].y-q[j].y));
}
double maxi[N];
int main(){
	cin>>n;
	for(int i=1;i<=n;i++){
		cin>>q[i].x>>q[i].y;
	}
	for(int i=1;i<=n;i++){
		for(int j=1;j<=n;j++)
		if(i==j)e[i][j]=0;
		else	e[i][j]=2147483647;
	}
	for(int i=1;i<=n;i++){
		for(int j=1;j<=n;j++){
			scanf("%1d",&c);
			if(c==1&&i!=j)e[i][j]=dis(i,j);
		}
	}
	for(int k=1;k<=n;k++)
		for(int i=1;i<=n;i++)
			for(int j=1;j<=n;j++)
				e[i][j]=min(e[i][j],e[i][k]+e[k][j]);
	for(int i=1;i<=n;i++){
		for(int j=1;j<=n;j++){
			if(e[i][j]!=2147483647)
			maxi[i]=max(maxi[i],e[i][j]);
//			ans=max(ans,maxi[i]);
		}
	}
	ans=2147483647;
	for(int i=1;i<=n;i++){
		for(int j=1;j<=n;j++){
			if(e[i][j]==2147483647)
//			cout<<ans<<"\n";
			ans=min(ans,maxi[i]+maxi[j]+dis(i,j));
		}
	}
	for(int i=1;i<=n;i++)ans=max(ans,maxi[i]);
	printf("%.6lf",ans);
	return 0;
}
/*
5
0 0
0 1
1 0
100 100
200 200
00000
00100
01000
00001
00010


*/

2025/1/22 09:41
加载中...