#include<stdio.h>
#include<string.h>
#include<math.h>
#include<algorithm>
#define MAX 210
using namespace std;
double arr1[MAX];
double arr2[MAX];
double mat[MAX][MAX];
long n,i,j,k,test=0;
double a,b,c;
void Floyd()
{
for(k=0;k<n;k++)
{
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
{
if(mat[i][j]!=0 && mat[i][k]>0 && mat[k][j]>0)
{
mat[i][j]=min(mat[i][j],max(mat[i][k],mat[k][j]));
}
}
}
}
}
int main()
{
while(scanf("%ld",&n)==1)
{
if(n==0)
{
break;
}
for(i=0;i<n;i++)
{
scanf("%lf%lf",&arr1[i],&arr2[i]);
}
for(i=0;i<n;i++)
{
for(j=i+1;j<n;j++)
{
a=pow((arr1[i]-arr1[j]),2);
b=pow((arr2[i]-arr2[j]),2);
c=sqrt(a+b);
mat[i][j]=c;
mat[j][i]=c;
}
}
Floyd();
printf("Scenario #%ld\nFrog Distance = %.3lf\n\n",++test,mat[0][1]);
memset(mat,0.0,sizeof(mat));
}
return 0;
}
#include<string.h>
#include<math.h>
#include<algorithm>
#define MAX 210
using namespace std;
double arr1[MAX];
double arr2[MAX];
double mat[MAX][MAX];
long n,i,j,k,test=0;
double a,b,c;
void Floyd()
{
for(k=0;k<n;k++)
{
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
{
if(mat[i][j]!=0 && mat[i][k]>0 && mat[k][j]>0)
{
mat[i][j]=min(mat[i][j],max(mat[i][k],mat[k][j]));
}
}
}
}
}
int main()
{
while(scanf("%ld",&n)==1)
{
if(n==0)
{
break;
}
for(i=0;i<n;i++)
{
scanf("%lf%lf",&arr1[i],&arr2[i]);
}
for(i=0;i<n;i++)
{
for(j=i+1;j<n;j++)
{
a=pow((arr1[i]-arr1[j]),2);
b=pow((arr2[i]-arr2[j]),2);
c=sqrt(a+b);
mat[i][j]=c;
mat[j][i]=c;
}
}
Floyd();
printf("Scenario #%ld\nFrog Distance = %.3lf\n\n",++test,mat[0][1]);
memset(mat,0.0,sizeof(mat));
}
return 0;
}
0 comments: (+add yours?)
Post a Comment