///题意:先求所有通路中青蛙尽量跳小步(小步组成整个通路) 小步中的跳的最大一步的距离(每条通路一个)
/// 比较所有以上结果 最小的为最终结果 可以用最小生成树做 当生成树中A和B相通时停止(树可能不完整) 此树中的最大边就是结果
#include<iostream>
#include<cstdio>
#include<cstring>
#include<cmath>
using namespace std;
struct node
{
int x,y;
}st[220];
double dis[220][220];
int main()
{
int n;
int I=0;
while(scanf("%d",&n),n!=0)
{
int j;
int i;
I++;
for(i=0;i<n;++i)
{
dis[i][i]=0;
scanf("%d%d",&st[i].x,&st[i].y);
for(j=0;j<i;++j)
{
dis[i][j]=sqrt(double((st[i].x-st[j].x)*(st[i].x-st[j].x)+(st[i].y-st[j].y)*(st[i].y-st[j].y)));
dis[j][i]=dis[i][j];
}
}
int k;
for(k=0;k<n;++k)
{
for(i=0;i<n;++i)
{
for(j=0;j<n;++j)
{
if(dis[i][k]<dis[i][j]&&dis[k][j]<dis[i][j])
{
dis[i][j]=max(dis[i][k],dis[k][j]);
}
}
}
}
printf("Scenario #%d\nFrog Distance = %.3lf\n\n",I,dis[0][1]);
}
}
poj2253flody变形(最小生成树)
最新推荐文章于 2022-03-09 16:55:41 发布