uva534

来源:互联网 发布:java调用数组参数 编辑:程序博客网 时间:2024/05/16 15:25
#include <iostream>#include <string.h>#include <algorithm>#include <math.h>#include <iomanip>using namespace std;double par[220][220];double dis[220];int vis[220];int n;double ans;class node{public:    int x;    int y;};node nodes[202];void init(){    for(int i=1; i<=n; i++)        for(int j=1; j<=n; j++)            if(i!=j)            {                double tmp=sqrt((double)((nodes[i].x-nodes[j].x)*(nodes[i].x-nodes[j].x)+(nodes[i].y-nodes[j].y)*(nodes[i].y-nodes[j].y)));                par[i][j]=tmp;                par[j][i]=tmp;            }            else            {                par[i][j]=0;                par[j][i]=0;            }    memset(vis,0,sizeof(vis));}void dj(){    vis[1]=1;    for(int i=2; i<=n; i++)        dis[i]=par[1][i];    dis[1]=0;    while(1)    {        int v=-1;        double min_dis=10000000;        for(int i=1; i<=n; i++)        {            if(!vis[i] && min_dis>dis[i])            {                min_dis=dis[i];                v=i;            }        }        if(v==-1)        {            ans=dis[2];            return ;        }        vis[v]=1;        for(int i=1; i<=n; i++)            if(!vis[i] && dis[i]>max(dis[v],par[v][i] ))                dis[i]=max(dis[v],par[v][i] );    }}int main(){    int t=0;    while(cin>>n,n)    {        for(int i=1; i<=n; i++)        {            cin>>nodes[i].x>>nodes[i].y;        }        init();        dj();        cout<<"Scenario #"<<++t<<endl<<"Frog Distance = "<<fixed<<setprecision(3)<<ans<<endl<<endl;    }    return 0;}