5 0 0 2 0 2 2 0 2 3 1 5 1 2 1 3 1 4 2 5 3 5 1 5
3.41
最短路问题,可以用floyd算法
#include<stdio.h>
#include<string.h>
#include<math.h>
#define N 10001
int a[101],b[101];
double g[101][101];
int main()
{
int n,m,i,j,k,x,y,s,t;
scanf("%d",&n);
for(i=1;i<=n;i++)
{
scanf("%d%d",&a[i],&b[i]);
}
for(i=1;i<=n;i++)
{
for(j=1;j<=n;j++)
{
g[i][j]=200000000;
}
}
scanf("%d",&m);
for(i=1;i<=m;i++)
{
scanf("%d%d",&x,&y);
g[x][y]=sqrt(pow(a[x]-a[y],2)+pow(b[x]-b[y],2));
g[y][x]=g[x][y];
}
scanf("%d%d",&s,&t);
for(i=1;i<=n;i++)
{
g[i][i]=0;
}
for(k=1;k<=n;k++)
{
for(i=1;i<=n;i++)
{
for(j=1;j<=n;j++)
{
if(g[i][j]>g[i][k]+g[k][j])
g[i][j]=g[i][k]+g[k][j];
}
}
}
printf("%.2lf",g[s][t]);
return 0;
}
版权声明:本文为博主原创文章,未经博主允许不得转载。
原文地址:http://blog.csdn.net/sh_tomorrow/article/details/47999495