hack求调
查看原帖
hack求调
727172
Nake_fu楼主2024/7/20 18:35

rt

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int N=155;
double f[N][N];
struct node{
	double x,y;
}a[N];
int n,x,y; 
string s;
double mi=2e9,d[N],ma;
signed main()
{
	cin>>n;
	for(int i=1;i<=n;i++)
	{ 
		for(int j=1;j<=n;j++)
		{
			if(i==j) f[i][j]=0;
			else f[i][j]=2e9;
		}
	}
	for(int i=1;i<=n;i++)
	{
		cin>>a[i].x>>a[i].y;
	}
	for(int i=1;i<=n;i++)
	{
		getchar();
		cin>>s;
		s=" "+s;
		for(int j=1;j<=s.size();j++)
		{
			if(s[j]=='1')
			{
				double tmp=sqrt((a[i].x-a[j].x)*(a[i].x-a[j].x)+(a[i].y-a[j].y)*(a[i].y-a[j].y));
				f[i][j]=tmp;
				f[j][i]=tmp;
				//cout<<f[i][j]<<" "<<f[j][i]<<endl;
			}
		}
	}
	for(int k=1;k<=n;k++)
	{
		for(int i=1;i<=n;i++)
		{
			for(int j=1;j<=n;j++)
			{
				if(i!=k && i!=j && k!=j) f[i][j]=min(f[i][j],f[i][k]+f[k][j]);
			}
		}
	}
	for(int i=1;i<=n;i++)
	{
		for(int j=1;j<=n;j++) if(f[i][j]<2e9) d[i]=max(d[i],f[i][j]);
		ma=max(ma,d[i]);
	}
	for(int i=1;i<=n;i++)
	{
		for(int j=1;j<=n;j++) if(f[i][j]==2e9) mi=min(mi,d[i]+d[j]+sqrt((a[i].x-a[j].x)*(a[i].x-a[j].x)+(a[i].y-a[j].y)*(a[i].y-a[j].y)));
	}
	for(int i=1;i<=n;i++)
	{
		for(int j=1;j<=n;j++)
		{
			cout<<f[i][j]<<" ";
		}
		cout<<endl;
	}
	//cout<<fixed<<setprecision(6)<<max(ma,mi);
	return 0;
 } 
2024/7/20 18:35
加载中...