http://poj.org/problem?id=2253

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\nFrog Distance = %.3lf\n\n",++m,sqrt((double)d[0][1]));

	} 

	return 0;

}


你可能感兴趣的:(http)