floyd的应用求每条路径两点之间最大距离的最小值
#include <iostream> #include <cstdio> #include <algorithm> #include <cmath> using namespace std; int a[205],b[205],d[205][205]; int main(int argc, char *argv[]) { int n,i,j,k,m=0; while(cin>>n&&n) { for(i=0;i<n;i++) cin>>a[i]>>b[i]; for(i=0;i<n;i++) for(j=0;j<n;j++) d[i][j]=(a[i]-a[j])*(a[i]-a[j])+(b[i]-b[j])*(b[i]-b[j]); for(k=0;k<n;k++) for(i=0;i<n;i++) for(j=0;j<n;j++) d[i][j]=min(d[i][j],max(d[i][k],d[k][j])); printf("Scenario #%d Frog Distance = %.3lf ",++m,sqrt((double)d[0][1])); } return 0; }