poj2253

来源:互联网 发布:医疗数据分析建模 编辑:程序博客网 时间:2024/04/29 03:45
/*
分析:
    最短路变异,不记录最短路,记录最小值就行了。


                                    2012-07-30 20:25
*/








#include"stdio.h"#include"math.h"#include"string.h"int n;struct A{int flag;int x,y;int dis;}E[211];int map[211][211];int MIN(int a,int b){return a>b?b:a;}int MAX(int a,int b){return a>b?a:b;}void Dij(){int i;int k;k=1;E[1].dis=0;while(k){E[k].flag=0;if(E[k].dis>E[2].dis)break;for(i=1;i<=n;i++){if(i==k)continue;E[i].dis=MIN(E[i].dis,MAX(E[k].dis,map[i][k]));}k=0;for(i=1;i<=n;i++)if(E[i].flag){k=i;break;}for(;i<=n;i++)if(E[i].flag && E[i].dis<E[k].dis)k=i;}}int main(){int Case=1;int i,l;while(scanf("%d",&n),n){for(i=1;i<=n;i++){scanf("%d%d",&E[i].x,&E[i].y);E[i].flag=1;E[i].dis=11111111;}for(i=1;i<=n;i++)for(l=1;l<=n;l++)map[i][l]=(E[i].x-E[l].x)*(E[i].x-E[l].x)+(E[i].y-E[l].y)*(E[i].y-E[l].y);Dij();printf("Scenario #%d\n",Case++);printf("Frog Distance = %0.3lf\n",pow(E[2].dis,0.5));printf("\n");}return 0;}