内容目录
Floyd 遍历
注意由于可能在第n步后,所以必须枚3方的
#include<cstdio> #include<cstring> #include<cstdlib> #include<cmath> #include<cctype> #include<iostream> #include<functional> #include<algorithm> using namespace std; #define MAXN (2000+10) #define MAXX (1000+10) int n,x[MAXN],y[MAXN]; double dis(int i,int j) { return sqrt(pow(abs(double(x[i]-x[j])),2)+pow(abs(double(y[i]-y[j])),2)); } double d[MAXN][MAXN]; int main() { int ii=1; while (1) { scanf("%d",&n); if (n==0) break; for (int i=1;i<=n;i++) { scanf("%d%d",&x[i],&y[i]); } // for (int i=1;i<=n;i++) cout<<d[i]<<' '; for (int i=1;i<=n;i++) { for (int j=1;j<i;j++) d[i][j]=d[j][i]=dis(i,j); } for (int k=1;k<=n;k++) for (int i=1;i<=n;i++) for (int j=1;j<=n;j++) d[i][j]=min(d[i][j],max(d[i][k],d[k][j])); printf("Scenario #%dn",ii); printf("Frog Distance = %.3lfnn",d[1][2]); // cout<<d[1]; ii++; } return 0; }