#include<iostream>
#include<math.h>
#include<cstring>
using namespace std;
const int N=100;
double mp[N][N];
double p[N][2];
int main(){
int n;//n个点
cin>>n;
for(int i=1;i<=n;i++){
cin>>p[i][0]>>p[i][1];
}
int m;//m条边
cin>>m;
memset(mp,0x7f,sizeof(mp));
for(int i=1;i<=m;i++){
int a,b;
cin>>a>>b;
mp[a][b]=mp[b][a]=sqrt((p[a][0]-p[b][0])*(p[a][0]-p[b][0])+(p[a][1]-p[b][1])*(p[a][1]-p[b][1]));
}
for(int k=1;k<=n;k++){//通过点k中转
for(int i=1;i<=n;i++){
for(int j=1;j<=n;j++){
if(i!=j&&i!=k&&k!=j&&mp[i][j]>mp[i][k]+mp[k][j]){
mp[i][j]=mp[i][k]+mp[k][j];
}
}
}
}
int s,t;
cin>>s>>t;
printf("%.2lf\n",mp[s][t]);
return 0;
}
最短路问题(Floyed算法,不能处理“负环”图)
于 2024-04-12 21:13:42 首次发布
本文介绍了使用C++编程语言实现Floyd算法,该算法用于求解在给定图中两点之间的最短路径,通过中转节点逐步优化路径长度。
摘要由CSDN通过智能技术生成