【floyed最短路】例题4.1—473页  最短路径问题

【floyed最短路】例题4.1—473页  最短路径问题

【floyed最短路】例题4.1—473页  最短路径问题 

根据样例画图为上.  求dis[1][5]   

#include<cstdio>
#include<cmath>
#include<iostream>
#include<cstring>
using namespace std;
int a[101][3];
double f[101][101];  //floyed存储了 任意2点间最短路 
int n,i,j,k,x,y,m,s,e;
int main()
{   //存到同一目录下面用文件的方式读入 
    freopen("short.in","r",stdin);
    freopen("short.out","w",stdout);
    cin>>n;
    for(i=1;i<=n;i++)
      cin>>a[i][1]>>a[i][2];
    cin>>m;
    memset(f,0x7f,sizeof(f));
    for(i=1;i<=m;i++)
       {
           cin>>x>>y;
           f[y][x]=f[x][y]=sqrt(pow(double(a[x][1]-a[y][1]),2)+pow(double(a[x][2]-a[y][2]),2));
       }
           
           
cin>>s>>e;
for(k=1;k<=n;k++) 
  for(i=1;i<=n;i++)
    for(j=1;j<=n;j++)
        if((f[i][j]>f[i][k]+f[k][j])&&(i!=j)&&(i!=k)&&(j!=k))       f[i][j]=f[i][k]+f[k][j];
    printf("%.2lf\n",f[s][e]);

return 0;
    
}
View Code

相关文章:

  • 2021-11-05
  • 2021-08-11
猜你喜欢
  • 2022-12-23
  • 2022-01-05
  • 2021-11-30
  • 2021-11-04
相关资源
相似解决方案