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;
}


posted @ 2013-08-12 20:17  pangbangb  阅读(372)  评论(0编辑  收藏  举报