100pts 被Hack了求调
查看原帖
100pts 被Hack了求调
573963
wbh20090611楼主2024/7/16 20:16
#include<bits/stdc++.h>
using namespace std;
int n,x[151],y[151];
double f[151][151],mm,m[151];
int main(){
    cin>>n;
    for(int i=1;i<=n;i++)cin>>x[i]>>y[i];
    for(int i=1;i<=n;i++){
        for(int j=1;j<=n;j++)f[i][j]=100000000;
        f[i][i]=0;
    }
    for(int u=1;u<=n;u++){
        for(int v=1;v<=n;v++){
            int o;
            scanf("%1d",&o);
            if(o)f[u][v]=sqrt((y[u]-y[v])*(y[u]-y[v])+(x[u]-x[v])*(x[u]-x[v]));
        }
    }
    for(int k=1;k<=n;k++)for(int i=1;i<=n;i++)for(int j=1;j<=n;j++)if(f[i][j]>f[i][k]+f[k][j])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]!=100000000)mm=max(mm,f[i][j]),m[i]=max(m[i],f[i][j]),m[j]=max(m[j],f[i][j]);
        }
    }
    double u=100000000;
    for(int i=1;i<=n;i++){
        for(int j=1;j<=n;j++){
            if(f[i][j]==100000000)u=min(u,m[i]+m[j]+sqrt((y[i]-y[j])*(y[i]-y[j])+(x[i]-x[j])*(x[i]-x[j])));
        }
    }
    printf("%.6lf",max(u,mm));
}

Hack数据

Hack_input

5
0 0
0 1
1 0
100 100
200 200
00000
00100
01000
00001
00010

Hack_output

2.414214

程序输出:

141.421356
2024/7/16 20:16
加载中...