uva 534

floyd算法 数据量比较小  就简单了~

/*************************************************************************
    > Author: xlc2845       > Mail: xlc2845@gmail.com
    > Created Time: 2013年10月31日 星期四 13时55分07秒
 ************************************************************************/

#include <iostream>
#include <cstdio>
#include <cmath>
#include <cstring>
#include <queue>
#include <set>
#include <cstdlib>
#define maxn 300

using namespace std;

struct node
{
    int x, y;
};

int n;
node lake[maxn];
double dist[maxn][maxn];

double get_dist(int i, int j)
{
    return sqrt((lake[i].x - lake[j].x)*(lake[i].x - lake[j].x) + (lake[i].y - lake[j].y)*(lake[i].y - lake[j].y));
}
void floyd()
{
    for(int k = 0; k < n; k++)
        for(int i = 0; i < n; i++)
            for(int j = 0; j < n; j++)
                dist[i][j] = min(dist[i][j], max(dist[i][k], dist[k][j]));
}
void init()
{
    for(int i = 0; i < n; i++)
        scanf("%d%d", &lake[i].x, &lake[i].y);
    for(int i = 0; i < n; i++)
        for(int k = 0; k < i; k++)
            if(k != i)
                dist[i][k] = dist[k][i] = get_dist(i, k);
            else
                dist[i][i] = 0;
}
int main()
{
    int ca = 1;
    while (scanf("%d",&n) && n)
    {
        init();
        floyd();
        printf("Scenario #%d\n", ca++);
        printf("Frog Distance = %.3lf\n\n", dist[0][1]);
    }
    return 0;
}




posted @ 2013-10-31 14:44  xlc2845  阅读(172)  评论(0)    收藏  举报