【codevs2602】最短路径问题

匿名 (未验证) 提交于 2019-12-03 00:22:01

problem

solution

codes

#include<cstdio> #include<cstring> #include<cmath>  using namespace std;  int a[101],b[101]; double f[101][101]; int n,m,x,y,s,t;  void floyd(){     for(int k=1;k<=n;k++)         for(int i=1;i<=n;i++)           for(int j=1;j<=n;j++)             if(i!=j&&i!=k&&j!=k&&(f[i][k]+f[k][j]<f[i][j]))f[i][j]=f[i][k]+f[k][j]; } void read(){     scanf("%d",&n);     for(int i=1;i<=n;i++)     scanf("%d%d",&a[i],&b[i]);     scanf("%d",&m);     memset(f,0x7f,sizeof(f));     for(int i=1;i<=m;i++){         scanf("%d%d",&x,&y);         f[x][y]=f[y][x]=sqrt(pow(double(a[x]-a[y]),2)+pow(double(b[x]-b[y]),2));     }     scanf("%d%d",&s,&t); } int main(){     read();     floyd();             printf("%.2lf",f[s][t]);     return 0; }
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!