标签:
| Time Limit: 1000MS | Memory Limit: 65536K | |
| Total Submissions: 28825 | Accepted: 9359 |
Description
Input
Output
Sample Input
2 0 0 3 4 3 17 4 19 4 18 5 0
Sample Output
Scenario #1 Frog Distance = 5.000 Scenario #2 Frog Distance = 1.414
Source
给出两只青蛙的坐标A、B,和其他的n-2个坐标,任一两个坐标点间都是双向连通的。显然从A到B存在至少一条的通路,每一条通路的元素都是这条通路中前后两个点的距离,这些距离中又有一个最大距离。
现在要求求出所有通路的最大距离,并把这些最大距离作比较,把最小的一个最大距离作为青蛙的最小跳远距离。
本题输出的时候不可以用%。lf wa了好几次在这里
必须用%。f
#i
#include<stdio.h>
#include<math.h>
#include<string.h>
double path[201][201];
struct node{
double x;
double y;
}que[201];
int main(){
int n;
int Count=0;
while(scanf("%d",&n)!=EOF){
if(n==0)
break;
memset(path,0,sizeof(path));
Count++;
for(int i=1;i<=n;i++){
scanf("%lf%lf",&que[i].x,&que[i].y);
}
for(int i=1;i<=n-1;i++){
for(int j=i+1;j<=n;j++){
double tx=que[i].x-que[j].x;
double ty=que[i].y-que[j].y;
path[i][j]=path[j][i]=sqrt(tx*tx+ty*ty);
}
}
for(int k=1;k<=n;k++)
for(int i=1;i<n;i++)
for(int j=i+1;j<=n;j++)
if(path[i][k]<path[i][j]&&path[k][j]<path[i][j])
if(path[i][k]<path[k][j])
path[i][j]=path[j][i]=path[k][j];
else
path[i][j]=path[j][i]=path[i][k];
printf("Scenario #%d\n",Count);
printf("Frog Distance = %.3lf\n",path[1][2]);
printf("\n");
}
return 0;
}
标签:
原文地址:http://www.cnblogs.com/13224ACMer/p/4634596.html