题目 uva 534
题目大意:
有两只青蛙,在两块不同的石头上,有一只想要去拜访另一只,要求通过它石头进行跳跃然后在一起呀在一起,可想而知,由于石头有很多,他们中间的路径也有很多,现在要求求一个长度:从每条路径里面挑出那步跨越最大的,然后从这些跨越最大的里面挑出最小的。
分析:flody 的改版
#include <cstring>
#include <cstdio>
#include <cmath>
double x[202], y[202];
double dist[202][202];
int main()
{
int n, t = 1;
while (~scanf("%d",&n) && n) {
for (int i = 0; i < n; ++ i)
scanf("%lf%lf",&x[i],&y[i]);
for (int i = 0; i < n; ++ i)
for (int j = 0; j < i; ++ j) {
dist[i][j] = sqrt((x[i]-x[j])*(x[i]-x[j])+(y[i]-y[j])*(y[i]-y[j]));
dist[j][i] = dist[i][j];
}
for (int k = 0; k < n; ++ k)
for (int i = 0; i < n; ++ i)
for (int j = 0; j < n; ++ j) {//因为k 在最外围
double max = dist[i][k]>dist[k][j]?dist[i][k]:dist[k][j];
if (dist[i][j] > max)
dist[i][j] = max;
}
printf("Scenario #%d\n", t ++);
printf("Frog Distance = %.3lf\n\n", dist[0][1]);
}
return 0;
}