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;
}
上一篇:Roadblocks http://poj.org/problem?id=3255


下一篇:线段树 (区间更新,区间查询) poj http://poj.org/problem?id=3468