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